给定一个二进制数组, 计算其中最大连续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