2025-02-18:交替组Ⅱ。用go语言,给定一个整数数组colo...

架构师课程 2025-02-18 21:30:35

2025-02-18:交替组Ⅱ。用go语言,给定一个整数数组 colors 和一个整数 k,数组 colors 由红色和蓝色瓷砖组成。数组中的元素表示瓷砖的颜色:

1.colors[i] == 0 表示第 i 块瓷砖为红色。

2.colors[i] == 1 表示第 i 块瓷砖为蓝色。

这组瓷砖形成一个环,意味着数组的首尾是相连的。若环中有 k 块连续的瓷砖颜色交替(即除了首尾两块外,任意中间的瓷砖颜色都与它两侧的颜色不同),则这 k 块瓷砖被称为一个交替组。

你的任务是计算并返回这样的交替组的数量。

3 <= colors.length <= 100000。

0 <= colors[i] <= 1。

3 <= k <= colors.length。

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

输出:2。

答案2025-02-18:

chatgpt[1]

题目来自leetcode3208。

大体步骤如下:

1.定义一个函数 numberOfAlternatingGroups(colors []int, k int),接收一个整数数组 colors 和一个整数 k。

2.初始化变量 res 和 cnt 为0和1。

3.循环遍历数组 colors:

• 从下标 -k+2 开始,直到数组末尾。• 检查当前瓷砖颜色和它前一块瓷砖颜色是否不同。

4.如果颜色不同,递增 cnt;否则,将 cnt 重置为1。

5.如果 cnt 大于等于 k,增加 res 的计数。

6.返回最终的 res 值。

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

总的额外空间复杂度为O(1),因为除了几个变量外,没有使用额外的空间。

Go完整代码如下:package mainimport "fmt"func numberOfAlternatingGroups(colors []int, k int) int { n := len(colors) res, cnt := 0, 1 for i := -k + 2; i < n; i++ { if colors[(i+n)%n] != colors[(i-1+n)%n] { cnt++ } else { cnt = 1 } if cnt >= k { res++ } } return res}func main() { colors := []int{0, 1, 0, 0, 1, 0, 1} k := 6 result := numberOfAlternatingGroups(colors, k) fmt.Println(result) // 输出 : 2}

在这里插入图片描述

Rust完整代码如下:fn number_of_alternating_groups(colors: Vec<i32>, k: i32) -> i32 { let n = colors.len(); let mut res = 0; let mut cnt = 1; for i in -k + 2..n as i32 { if colors[(i + n as i32) as usize % n] != colors[(i - 1 + n as i32) as usize % n] { cnt += 1; } else { cnt = 1; } if cnt >= k { res += 1; } } return res;}fn main() { let colors = vec![0, 1, 0, 0, 1, 0, 1]; let k = 6; let result = number_of_alternating_groups(colors, k); println!("输出 : {}", result); // 输出 : 2}

在这里插入图片描述

Python完整代码如下:# -*-coding:utf-8-*-def number_of_alternating_groups(colors, k): n = len(colors) res = 0 cnt = 1 for i in range(-k + 2, n): if colors[(i + n) % n] != colors[(i - 1 + n) % n]: cnt += 1 else: cnt = 1 if cnt >= k: res += 1 return resif __name__ == '__main__': colors = [0, 1, 0, 0, 1, 0, 1] k = 6 result = number_of_alternating_groups(colors, k) print(result) # 输出: 2

在这里插入图片描述

引用链接

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

0 阅读:0