题解 | #乘积为整数的最长连续子数组#

乘积为整数的最长连续子数组

http://www.nowcoder.com/practice/0112b9b5a09048d89309f55ea666db91

动态规划,同时维护最长连续正数和最长连续负数
import java.util.*;
public class Main{
    public static void main(String []args){
        Scanner input=new Scanner(System.in);
        int n=input.nextInt();
        int []num=new int[n];
        for(int i=0;i<n;i++){
            num[i]=input.nextInt();
        }
        int [][]dp=new int[n+1][2];
        int max=0;
        dp[0][0]=0;
        dp[0][1]=0;
        for(int i=1;i<=n;i++){
           int val=num[i-1];
            if(val>0){
                dp[i][0]=dp[i-1][0]+1;
                if(dp[i-1][1]==0){
                    dp[i][1]=0;
                }
                else{
                    dp[i][1]=dp[i-1][1]+1;
                }
            }
            else if(val<0){   //交叉更新
                dp[i][1]=dp[i-1][0]+1;
                if(dp[i-1][1]==0){
                    dp[i][0]=0;
                }
                else{
                    dp[i][0]=dp[i-1][1]+1;
                }
            }
        }
            
        for(int i=1;i<=n;i++){
            max=Math.max(max,dp[i][0]);
        }
         System.out.println(max);
    }
}


全部评论
妙啊
点赞 回复 分享
发布于 2024-04-09 01:37 广东
看不懂...
点赞 回复 分享
发布于 2022-03-29 18:10

相关推荐

不愿透露姓名的神秘牛友
昨天 17:13
想去,但是听说加班强度实在难崩,所以拒绝了,现在有点心梗对面hr感觉也是实习生,打电话的时候怪紧张的,但是感觉人很好嘞
水中水之下水道的鼠鼠:哥们这不先去体验一下,不行再跑呗,大不了混个实习经历(有更好的转正offer就当我没说)
点赞 评论 收藏
分享
流浪的神仙:无恶意,算法一般好像都得9硕才能干算法太卷啦
点赞 评论 收藏
分享
评论
4
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务