3208.交替组II
链接:3208.交替组II
难度:Medium
标签:数组、滑动窗口
简介:请你返回 交替 组的数目。
题解 1 - python
- 编辑时间:2024-11-27
- 执行用时:183ms
- 内存消耗:20.6MB
- 编程语言:python
- 解法介绍:记录以r为最后一个元素的滑动窗口
class Solution:
    def numberOfAlternatingGroups(self, colors: List[int], k: int) -> int:
        n = len(colors)
        l = 0
        while colors[l] != colors[(l + n - 1) % n]:
            l = (l + n - 1) % n
            if l == 0:
                l = 1
                break
        res = 0
        for r in range(n):
            if colors[r] == colors[(r + n - 1) % n]:
                l = r
            else:
                cnt = r - l + 1 if l <= r else r + 1 + n - l
                if cnt >= k: res += 1
            if (r + 1) % n == l:
                l = (l + 1) % n
        return res