题目地址: leetcode.com/problems/ma…
给定一个数组,求其最长只含1 11的子数组的长度。思路是快慢双指针。代码如下:
public class Solution {
public int findMaxConsecutiveOnes(int[] nums) {
if (nums == null || nums.length == 0) {
return 0;
}
// l为慢指针,r为快指针
int l = 0, r = 0;
int res = 0;
while (true) {
// 先略过不等于1的数
while (l < nums.length && nums[l] != 1) {
l++;
}
// 如果走到末尾了,就退出循环
if (l == nums.length) {
break;
}
// r从l开始走,略过所有等于1的数
r = l;
while (r < nums.length && nums[r] == 1) {
r++;
}
// 记录得到的长度,更新res
res = Math.max(res, r - l);
// 让l从r开始继续遍历数组
l = r;
}
return res;
}
}