大纲
- 题目
- 地址
- 内容
- 解题
- 代码地址
题目
地址
https://leetcode.com/problems/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:
Input: colors = [1,1,1]
Output: 0
Explanation:
Example 2:
Input: colors = [0,1,0,0,1]
Output: 3
Explanation:
Alternating groups:
Constraints:
- 3 <= colors.length <= 100
- 0 <= colors[i] <= 1
解题
这题就是要求两个相同颜色夹一个其他颜色的组合个数。这题唯一需要注意的就是使用vector的下标表达环形结构。
#include <vector>
using namespace std;class Solution {
public:int numberOfAlternatingGroups(vector<int>& colors) {int result = 0;for (int i = 0; i < colors.size(); i++) {if (colors[i] == colors[(i + 2) % colors.size()] && colors[i] != colors[(i + 1) % colors.size()]) {result++;}}return result;}
};
代码地址
https://github.com/f304646673/leetcode/tree/main/3206-Alternating-Groups-I/cplusplus