485. Max Consecutive Ones

Given a binary array, find the maximum number of consecutive 1s in this array.

Example 1:

Input: [1,1,0,1,1,1]
Output: 3
Explanation: The first two digits or the last three digits are consecutive 1s.
    The maximum number of consecutive 1s is 3.

 

Note:

  • The input array will only contain 0 and 1.
  • The length of input array is a positive integer and will not exceed 10,000
class Solution {
    public int findMaxConsecutiveOnes(int[] nums) {
        int res = 0;
        int cur = 0;
        for(int i: nums){
            if(i == 1) cur++;
            else{
                res = Math.max(cur, res);
                cur = 0;
            }
        }
        res = Math.max(cur, res);
        return res;
    }
}

注意下cur到最后不是0的情况

class Solution {
    public int findMaxConsecutiveOnes(int[] nums) {
        int res = 0, left = 0;
        for(int right = 0; right < nums.length; right++) {
            if(nums[right] != 1) {
                while(left <= right) left++;
            }            
            else res = Math.max(res, right - left + 1);
        }
        return res;
    }
}

用sliding window也可以

posted @ 2020-07-04 12:43  Schwifty  阅读(128)  评论(0编辑  收藏  举报