485. Max Consecutive Ones
這也是一個滑動窗口的應用,右邊指針不斷的往右側前進,如果說一直是一的話,左側的指針就不會動,右指針的位置減去左指針的位置就是連續 1 的數量。
為什麼可以這樣做是因為兩個原因
- 在我已經取得了當下的位置的時候,右側指針就已經向前移一步了。
- 如果當下的數字是 0 ,右側指針已經往前了,左側指針也會移動到現在右側指針的位置,所以左指針和右指針又同步了。因此後面繼續探索的步驟和初始狀態一樣。
class Solution:
def findMaxConsecutiveOnes(self, nums: List[int]) -> int:
left = 0
right = 0
ans = 0
while right < len(nums):
num = nums[right]
right += 1
if num == 1:
ans = max(ans, right - left)
else:
left = right
return ans