3206. Alternating Groups I

3206. Alternating Groups I

Description

There is a circle of red and blue tiles. You are given an array of integers colors. The color of tile i is represented by colors[i]:

  • colors[i] == 0 means that tile i is red.
  • colors[i] == 1 means that tile i is blue.

Every 3 contiguous tiles in the circle with alternating colors (the middle tile has a different color from its left and right tiles) is called an alternating group.

Return the number of alternating groups.

Note that since colors represents a circle, the first and the last tiles are considered to be next to each other.

Example 1:

1
2
3
Input: colors = [1,1,1]

Output: 0

Explanation:

Example 2:

1
2
3
Input: colors = [0,1,0,0,1]

Output: 3

Explanation:

Alternating groups:

Constraints:

  • 3 <= colors.length <= 100
  • 0 <= colors[i] <= 1

Hints/Notes

  • Biweekly Contest 134

Solution

Language: C++

1
2
3
4
5
6
7
8
9
10
11
12
13
class Solution {
public:
int numberOfAlternatingGroups(vector<int>& colors) {
int n = colors.size(), res = 0;
for (int i = 0; i < n; i++) {
if (colors[(i - 1 + n) % n] != colors[i] &&
colors[i] != colors[(i + 1) % n]) {
res++;
}
}
return res;
}
};