485. 最大连续1的个数
给定一个二进制数组, 计算其中最大连续1的个数。
示例 1:
输入: [1,1,0,1,1,1]
输出: 3
解释: 开头的两位和最后的三位都是连续1,所以最大连续1的个数是 3.
题解
一次遍历数组
定义一个maxCount记录当前数组中最多连续1的个数。从头遍历数组,遇到1时,count++,并与maxCount比较,更新最多连续1的值;当遇到0时,清空count。最后返回maxCount即可。
public int findMaxConsecutiveOnes2(int[] nums) {
int maxCount = 0;
int count = 0;
int length = nums.length;
for (int i = 0; i < length; i++) {
if (nums[i] == 1) {
count++;
maxCount = Math.max(maxCount, count);
} else {
count = 0;
}
}
return maxCount;
}
双指针
套用滑动窗口的模板即可,最大的连续1个数用right-left记录。当遇到0时,要使左边界移到当前右边界。
public int findMaxConsecutiveOnes(int[] nums) {
int maxCount = 0;
int n = nums.length;
int left = 0;
int right = 0;
while (right < n) {
if (nums[right] == 1) {
right++;
} else {
maxCount = Math.max(maxCount, right - left);
right++;
left = right;
}
}
return Math.max(maxCount, right - left);
}
网友评论