前言

每天和你一起刷 LeetCode 每日一题~

本期看点:本期无看点,最近日子比较艰难

说好的每天刷每日一题的,昨天线代期中,接下来是高数期中,然后紧接着是大学物理实验期末 . . . 生活略感困苦,时有断更,活着已经很厉害了

LeetCode 启动!

【LeetCode】每日一题 2024_11_26 交替组 I(模拟)-LMLPHP

题目:交替组 I

【LeetCode】每日一题 2024_11_26 交替组 I(模拟)-LMLPHP

代码与解题思路

先读题:题目给了个环,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
}

每天进步一点点,我们明天不见不散~

11-30 12:29