给定一个长度为 n 的整数数组,请你找出其中最长的乘积为正数的子数组长度。 子数组的定义是原数组中一定长度的连续数字组成的数组。 数据范围: , 数组中的元素满足
区块链毕设网qklbishe.com为您提供问题的解答
import javax.swing.plaf.InputMapUIResource;
import java.io.*;
import java.nio.channels.ClosedByInterruptException;
import java.util.*;
import java.util.concurrent.ConcurrentNavigableMap;
import java.util.stream.Collectors;
public class Main {
static int count1;
static List<String> result = new ArrayList<>();
public static void main(String[] args) {
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String line;
while ((line = reader.readLine()) != null) {
int count = Integer.parseInt(line);
String[] values = reader.readLine().split(" ");
int[] value = new int[count];
for(int i=0;i<count;i++){
value[i] = Integer.parseInt(values[i]);
}
int result = fun(value,count);
System.out.println(result);
}
} catch (Exception e) {
e.printStackTrace();
}
}
private static int fun(int[] value, int count) {
int lastPindex=0,lastStartIndex=0;
int flag=1;
int[] dp = new int[count];
int maxCount=0;
List<Integer> l= new ArrayList<>();
for(int i=0;i<count;i++){
if(value[i]>0){
flag*=1;
}else if(value[i]==0){
flag=0;
}else{
flag*=-1;
}
if(flag>0){
lastPindex=i;
}else if(flag==0){
flag=1;
l.add(lastPindex+1-lastStartIndex);
lastStartIndex = i+1;
}
}
for(int i=0;i<l.size();i++){
if(l.get(i)>maxCount){
maxCount = l.get(i);
}
}
if(((lastPindex-lastStartIndex)+1)>maxCount){
maxCount = lastPindex-lastStartIndex+1;
}
return maxCount;
}
}
以上就是关于问题给定一个长度为 n 的整数数组,请你找出其中最长的乘积为正数的子数组长度。 子数组的定义是原数组中一定长度的连续数字组成的数组。
数据范围: , 数组中的元素满足的答案
欢迎关注区块链毕设网-
专业区块链毕业设计成品源码,定制。
区块链NFT链游项目方科学家脚本开发培训