/*
@v7fgg
执行用时:2 ms, 在所有 Java 提交中击败了100.00%的用户
内存消耗:48.7 MB, 在所有 Java 提交中击败了100.00%的用户
2020年6月29日 22:13
*/
class Solution {
public int longestSubarray(int[] nums) {
List<Integer> one=new ArrayList<>();
List<Integer> zero=new ArrayList<>();
int start=0;
for(int i=0;i<nums.length;i++){
if(nums[i]==1){
start=i;
break;
}
}
int ones=0;
int zeros=0;
while(start<nums.length){
while(start<nums.length&&nums[start]==1){
ones++;
start++;
}
if(ones>0){one.add(ones);}
ones=0;
while(start<nums.length&&nums[start]==0){
zeros++;
start++;
}
if(zeros>0){zero.add(zeros);}
zeros=0;
}
if(one.size()==0){return 0;}
if(one.size()==1){
if(zero.size()==0&&nums[0]!=0){return one.get(0)-1;}
return one.get(0);
}
int ans=0;
for(int i=0;i<one.size()-1;i++){
if(zero.get(i)==1){
ans=Math.max(ans,one.get(i)+one.get(i+1));
}
else{
ans=Math.max(ans,one.get(i));
}
}
return Math.max(ans,one.get(one.size()-1));
}
}
版权声明:本文为zhuruihe2014原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。