3206. 交替组 I
题目描述
给你一个整数数组 colors
,它表示一个由红色和蓝色瓷砖组成的环,第 i
块瓷砖的颜色为 colors[i]
:
colors[i] == 0
表示第i
块瓷砖的颜色是 红色 。colors[i] == 1
表示第i
块瓷砖的颜色是 蓝色 。
环中连续 3 块瓷砖的颜色如果是 交替 颜色(也就是说中间瓷砖的颜色与它 左边 和 右边 的颜色都不同),那么它被称为一个 交替 组。
请你返回 交替 组的数目。
注意 ,由于 colors
表示一个 环 ,第一块 瓷砖和 最后一块 瓷砖是相邻的。
示例 1:
示例 2:
提示:
3 <= colors.length <= 100
0 <= colors[i] <= 1
解法
方法一:一次遍历
我们令 \(k = 3\),表示交替组的长度为 \(3\)。
为了方便处理,我们可以将环展开成一个长度为 \(2n\) 的数组,然后从左到右遍历这个数组,用一个变量 \(\textit{cnt}\) 记录当前交替组的长度,如果遇到了相同的颜色,就将 \(\textit{cnt}\) 重置为 \(1\),否则将 \(\textit{cnt}\) 加一。如果 \(\textit{cnt} \ge k\),并且当前位置 \(i\) 大于等于 \(n\),那么就找到了一个交替组,答案加一。
遍历结束后,返回答案即可。
时间复杂度 \(O(n)\),其中 \(n\) 为数组 \(\textit{colors}\) 的长度。空间复杂度 \(O(1)\)。
1 2 3 4 5 6 7 8 9 10 11 12 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|