题解 | #乘积为正数的最长连续子数组#
乘积为正数的最长连续子数组
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届找工作求助阵地#
三奇智元机器人科技有限公司公司福利 82人发布