给定一个二进制数组, 计算其中最大连续1的个数。

示例 1:

输入: [1,1,0,1,1,1]
输出: 3
解释: 开头的两位和最后的三位都是连续1,所以最大连续1的个数是 3.

注意:

  • 输入的数组只包含 0 和1

  • 输入数组的长度是正整数,且不超过 10,000。

答案:

1public int findMaxConsecutiveOnes(int[] nums) {
2    int maxHere = 0, max = 0;
3    for (int n : nums)
4        max = Math.max(max, maxHere = n == 0 ? 0 : maxHere + 1);
5    return max;
6}

解析:

这个和之前的119,最大子序和有点类似,比较简单。我们知道二进制数组只有0和1,所以我们还可以换种写法

 1public int findMaxConsecutiveOnes(int[] nums) {
2    int max = 0;
3    int sum = 0;
4    for (int i = 0; i < nums.length; i++) {
5        sum = (sum + nums[i]) * nums[i];
6        if (max < sum) {
7            max = sum;
8        }
9    }
10    return max;
11}

nums[i]要么是1要么是0