问题描述
给定一个二进制数组, 计算其中最大连续 1 的个数。
示例:
输入:[1,1,0,1,1,1]
输出:3
解释:开头的两位和最后的三位都是连续 1 ,所以最大连续 1 的个数是 3.提示:
输入的数组只包含 0 和 1 。 输入数组的长度是正整数,且不超过 10,000。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/max-consecutive-ones
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路分析及代码实现
这道题就是一道简单的双指针问题,根据右指针的移动判断是否是1,然后每移动一次比较长度,如果右指针所指不为0,将左指针拿过来放到右指针+1的位置,同时右指针也+1
class Solution:
def findMaxConsecutiveOnes(self, nums: List[int]) -> int:
n = len(nums)
left = 0
right = 0
res = 0
while right < n:
if nums[right] == 1:
right += 1
elif nums[right] == 0:
left = right + 1
right += 1
res = max(res, right-left)
return res