DDSA
Advertisement

3208. Alternating Groups II

Time: O(n)
Space: O(1)

Approach

Sliding window of size k on circular array with duplicate prefix; count valid alternating windows.

3208.cs
C#
// Approach: Sliding window of size k on circular array with duplicate prefix; count valid alternating windows.
// Time: O(n) Space: O(1)

public class Solution
{
    public int NumberOfAlternatingGroups(int[] colors, int k)
    {
        int n = colors.Length;
        int ans = 0, cnt = 0;
        for (int i = 0; i < n << 1; ++i)
        {
            if (i > 0 && colors[i % n] == colors[(i - 1) % n])
                cnt = 1;
            else
                ++cnt;
                
            ans += i >= n && cnt >= k ? 1 : 0;
        }
        return ans;
    }
}
Advertisement
Was this solution helpful?