题解 | #乘积为正数的最长连续子数组#
乘积为正数的最长连续子数组
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届找工作求助阵地#