【LeetCode】每日一题 2024_11_26 交替组 I(模拟)
前言
每天和你一起刷 LeetCode 每日一题~
本期看点:本期无看点,最近日子比较艰难
说好的每天刷每日一题的,昨天线代期中,接下来是高数期中,然后紧接着是大学物理实验期末 . . . 生活略感困苦,时有断更,活着已经很厉害了
LeetCode 启动!
题目:交替组 I
代码与解题思路
先读题:题目给了个环,0 表示红色,1 表示蓝色,出现连续三个相邻元素不同,比如:1 0 1 就计为 1 个交替组,问有多少个交替组
对于环类型的题目,比较方便的首尾相接的方法是直接复制一份原数组追加在后面,然后遍历即可,用 cnt 进行计数,当出现相邻元素相同的情况,cnt 就重新计数,当 cnt >= 3 时,就让交替组数量++
注:在 i >= n 的情况下记录结果,是因为我们拷贝了一份原数组,所以需要进行去重。
具体代码如下:
func numberOfAlternatingGroups(colors []int) (ans int) {
cnt, n := 0, len(colors)
for i := 0; i < n*2; i++ { // 遍历环
if i > 0 && colors[i%n] == colors[(i-1)%n] { // 相邻的瓷砖颜色不能相同
cnt = 0
}
cnt++
if i >= n && cnt >= 3 { // 连续 3 块瓷砖颜色交替
ans++
}
}
return ans
}
每天进步一点点,我们明天不见不散~
可以和我刷一辈子的每日一题吗?
一题一题,积累起来就是一辈子。
原文地址:https://blog.csdn.net/Locky136/article/details/144056226
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!