【每日一題】 3208. 交替組 II

xiaoxinlong發表於2024-11-27

給你一個整數陣列 colors 和一個整數 kcolors表示一個由紅色和藍色瓷磚組成的環,第 i 塊瓷磚的顏色為 colors[i]

  • colors[i] == 0 表示第 i 塊瓷磚的顏色是 紅色 。
  • colors[i] == 1 表示第 i 塊瓷磚的顏色是 藍色 。

環中連續 k 塊瓷磚的顏色如果是 交替 顏色(也就是說除了第一塊和最後一塊瓷磚以外,中間瓷磚的顏色與它 左邊 和 右邊 的顏色都不同),那麼它被稱為一個 交替 組。

請你返回 交替 組的數目。

注意 ,由於 colors 表示一個 環 ,第一塊 瓷磚和 最後一塊 瓷磚是相鄰的。

class Solution:
    def numberOfAlternatingGroups(self, colors: List[int], k: int) -> int:
        n = len(colors)
        ans = cnt = 0
        for i in range(n * 2):
            # 環形陣列的處理方法
            # cnt表示以i結尾交替組的長度
            if i > 0 and colors[i % n] == colors[(i - 1) % n]:
                cnt = 0
            cnt += 1
            if i >= n and cnt >= k:
                ans += 1
        return ans

相關文章