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

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

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

import java.io.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int len = Integer.parseInt(br.readLine());
        String [] s = br.readLine().split(" ");
        int [] arr = new int [len];
        for(int i=0;i<len;i++){
            arr[i] = Integer.parseInt(s[i]);
        }
        
        int [] dpT = new int[len+1];
        int [] dpF = new int[len+1];
        dpT[0] = 0;
        dpF[0] = 0;
        int maxT =0;
        //因为存在着负负得正的情况需要保留两个
        for(int i = 1 ;i<=len ;i++){
          if(arr[i-1]>0){
            dpT[i] = dpT[i-1] + 1;
            if(dpF[i-1]==0){
                dpF[i] = 0;
            }
            else{
                dpF[i] = dpF[i-1]+1;
            }
          }
          else if(arr[i-1]<0){
            if(dpF[i-1]==0){
                dpT[i] =0;
                dpF[i] =dpT[i-1]+1;
            }
            else{
            dpT[i] = dpF[i-1]+1;
            dpF[i] = dpT[i-1]+1;
            }
          }
          else{
            dpF[i] = 0;
            dpT[i] = 0;
          }
        maxT = Math.max(maxT,dpT[i]);
        //System.out.println(maxT);
        }
        System.out.println(maxT);
    }
}

#23届找工作求助阵地#
全部评论

相关推荐

08-15 01:16
Python
Java小萌新新萌小...:照片不用整这么大的 而且你的照片截歪了 你想找专业对口的 那普通话证写在这里其实没有什么必要 就是看着内容多点 而且里面字体大小也不一样 修改一下排版 有很多空间可以再利用一下 字大一点 不然现在这样观感不太好 再就是项目好好优化一下 加油
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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