0%

Max_Consecutive_Ones

Max Consecutive Ones

485. Max Consecutive Ones

1
2
3
4
5
6
7
8
9
10
11
12
13
public int findMaxConsecutiveOnes(int[] nums) {
int res=0;
int cur=0;
for (int i = 0; i < nums.length; i++) {
if(nums[i]==1){
cur++;
res=Math.max(res,cur);
}else{
cur=0;
}
}
return res;
}

487. Max Consecutive Ones II

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public int findMaxConsecutiveOnes(int[] nums) {
int n=nums.length;
boolean firstZero=true;
int pre=0;
int cur=0;
int res=0;
for (int i = 0; i < n; i++) {
if(nums[i]==1){
cur++;
firstZero=true;
}else{
if(firstZero){
res=Math.max(res,pre+cur+1);
pre=cur;
cur=0;
firstZero=false;
}else{
pre=0;
}
}
}
res=Math.max(res,pre+cur+1);
return res>n ? n : res;
}

1004. Max Consecutive Ones III

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public int longestOnes(int[] nums, int k) {
int n=nums.length;
int left=0;
int right=0;
int res=0;
int curZero=0;
while(right<n){
//[left,right)
int cur=nums[right++];
if(cur==0){
curZero++;
while(curZero>k){
if(nums[left]==0){
curZero--;
}
left++;
}
}
res=Math.max(res,right-left);
}
return res;
}