給你一個整數陣列 colors
和一個整數 k
,colors
表示一個由紅色和藍色瓷磚組成的環,第 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