前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >2025-02-13:交替组Ⅰ。用go语言,给定一个整数数组 colors,它表示一个由红色和蓝色瓷砖组成的环。在这个数组中,c

2025-02-13:交替组Ⅰ。用go语言,给定一个整数数组 colors,它表示一个由红色和蓝色瓷砖组成的环。在这个数组中,c

作者头像
福大大架构师每日一题
发布2025-02-19 12:45:59
发布2025-02-19 12:45:59
5500
代码可运行
举报
运行总次数:0
代码可运行

2025-02-13:交替组Ⅰ。用go语言,给定一个整数数组 colors,它表示一个由红色和蓝色瓷砖组成的环。在这个数组中,colors[i] 的值为:

①.0 表示第 i 块瓷砖是红色。

②.1 表示第 i 块瓷砖是蓝色。

如果连续的三块瓷砖的颜色呈现交替状态(即中间的瓷砖颜色与两侧的瓷砖颜色不同),则称这些瓷砖构成一个“交替组”。

请你计算并返回这个环中交替组的数量。

需要注意的是,由于瓷砖呈环状排列,因此数组的第一块和最后一块瓷砖也是相邻的。

3 <= colors.length <= 100。

0 <= colors[i] <= 1。

输入:colors = [0,1,0,0,1]。

输出:3。

答案2025-02-13:

chatgpt[1]

题目来自leetcode3206。

大体步骤如下:

自然智慧即可。

1.初始化变量 n 为数组 colors 的长度,并初始化变量 res 为交替组的数量,初始值为 0。

2.使用一个循环遍历整个数组 colors

2.a.对于每个元素 colors[i],判断它与其前一个元素(考虑环形数组情况,需要使用 (i-1+n)%n)和后一个元素 (i+1)%n 的颜色是否不同。

2.b.如果当前元素与相邻的两个元素颜色都不同,则将交替组的数量 res 自增 1。

3.遍历完成后,返回交替组的数量 res

总体时间复杂度为 O(n),其中 n 为数组 colors 的长度。

空间复杂度为 O(1),只使用了常数级别的额外空间。

Go完整代码如下:

代码语言:javascript
代码运行次数:0
复制
package main

import (
    "fmt"
)

func numberOfAlternatingGroups(colors []int) int {
    n := len(colors)
    res := 0
    for i := 0; i < n; i++ {
        if colors[i] != colors[(i-1+n)%n] && colors[i] != colors[(i+1)%n] {
            res++
        }
    }
    return res
}

func main() {
    colors := []int{0, 1, 0, 0, 1}
    result := numberOfAlternatingGroups(colors)
    fmt.Println(result)
}
在这里插入图片描述
在这里插入图片描述

Rust完整代码如下:

代码语言:javascript
代码运行次数:0
复制
fn number_of_alternating_groups(colors: &[i32]) -> i32 {
    let n = colors.len() as i32;
    let mut res = 0;

    for i in 0..n {
        let prev_color = colors[((i - 1 + n) % n)as usize]; // Previous color in circular array
        let next_color = colors[((i + 1) % n) as usize]; // Next color in circular array

        if colors[i as usize] != prev_color && colors[i as usize] != next_color {
            res += 1;
        }
    }

    res
}

fn main() {
    let colors = vec![0, 1, 0, 0, 1];
    let result = number_of_alternating_groups(&colors);
    println!("{}", result);
}
在这里插入图片描述
在这里插入图片描述

Python完整代码如下:

代码语言:javascript
代码运行次数:0
复制
# -*-coding:utf-8-*-

def number_of_alternating_groups(colors):
    n = len(colors)
    res = 0
    
    for i in range(n):
        prev_color = colors[(i - 1 + n) % n]  # Previous color in circular array
        next_color = colors[(i + 1) % n]      # Next color in circular array
        
        if colors[i] != prev_color and colors[i] != next_color:
            res += 1
            
    return res

def main():
    colors = [0, 1, 0, 0, 1]
    result = number_of_alternating_groups(colors)
    print(result)

if __name__ == "__main__":
    main()
在这里插入图片描述
在这里插入图片描述
引用链接

[1] chatgpt: https://chatbotsplace.com/?rc=nnNWSCJ7EP

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-02-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 福大大架构师每日一题 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 大体步骤如下:
  • Go完整代码如下:
  • Rust完整代码如下:
  • Python完整代码如下:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档