485. 最大连续 1 的个数
解题思路
1.用于双指针技巧
2.快慢指针初始指向数组初始位置,在遇到0之前,快指针一直向后移动,慢指针不动
3.遇到0,快指针停止,此时计算位置差值,记录下来
4.快慢指针同时移动到此时0的下一位置,开始2~3,直至末尾
5.过程中,对每次记录的值与之前max做对比,最终返回max
6.末尾也可能是1,所以最终还需做一次max、sfast-slow判断
解题遇到的问题
1.用双指针的思想去解题
##解法1
class Solution {
public static int findMaxConsecutiveOnes(int[] nums) {
int slow = 0, sfast = 0, max = 0;
while (sfast < nums.length) {
if (nums[sfast] == 1) {
sfast++;
} else {
max = Math.max(sfast - slow, max);
sfast++;
slow = sfast;
}
}
max = Math.max(sfast - slow, max);
return max;
}
}
网友评论