周賽383。

題目

有隻螞蟻站在邊界上,他有時候走左,有時候走右。

輸入非零整數陣列 nums,依序代表螞蟻的移動順序。每次移動規則如下:

  • 若 nums[i] < 0,則向走左 -nums[i] 步
  • 若 nums[i] > 0,則向走左 nums[i] 步

求螞蟻會回到邊界幾次。

注意:

  • 邊界兩方無限寬廣
  • 只有在螞蟻移動結束才進行判定。也就是說,如果移動中有經過邊界,但沒有停留,則不計入

解法

說邊界好像有點怪怪的,乾脆叫起點

反正就是照著移動,移動完停在起點的話答案就加 1。

時間複雜度 O(N)。
空間複雜度 O(1)。

class Solution:
    def returnToBoundaryCount(self, nums: List[int]) -> int:
        ans = 0
        curr = 0
        for x in nums:
            curr += x
            if curr == 0:
                ans += 1
                
        return ans