当前位置:首页 > 技术分析 > 正文内容

2025-02-13:交替组Ⅰ。用go语言,给定一个整数数组 colors,它表

ruisui883个月前 (02-18)技术分析10

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完整代码如下:

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完整代码如下:

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完整代码如下:

# -*-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

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/2038.html

标签: go数组
分享给朋友:

“2025-02-13:交替组Ⅰ。用go语言,给定一个整数数组 colors,它表” 的相关文章

适合旧电脑2022年值得推荐的 10 款轻量级 Linux 发行版

推荐 10 款轻量级Linux 发行版,它们是 2022 年的轻量级、对旧硬件友好的 Linux 发行版。1、Linux LiteLinux Lite 是一款基于#ubuntu# 和 Debian 的、正在不断开发和完善的 Linux 发行版,极好看的 Xfce 桌面,并基于 Ubuntu,采用了...

双子座应用程序推出模型切换器以在Android上访问2.0

#头条精品计划# 快速导读谷歌推出了Gemini 2.0 Flash实验版,现已在其安卓应用中可用,之前仅在gemini.google.com网站上提供。新版本的15.50包含模型切换器,用户可以在设置中选择不同模型,包括1.5 Pro、1.5 Flash和2.0 Flash实验版。谷歌提醒,2.0...

《暗黑破坏神 2:重制版》PC 版 2.3 版本发布,支持英伟达 DLSS

IT之家 12 月 3 日消息,暴雪为《暗黑破坏神 2:重制版》PC 版发布了更新 2.3 版本,添加了“离线难度缩放”滑块(玩家可以在单人游戏时增加挑战和奖励的级别)、多项辅助功能和用户界面改进,以及英伟达 DLSS 支持。玩法改进:玩家现在可以在离线游戏的选项菜单中使用“游戏难度等级”,它提供与...

Vue中路由router的基本使用

??本文开始我们来给大家介绍在Vue中非常重要的一个内容,就是路由Router什么是路由后端路由:对于普通的网站,所有的超链接都是URL地址,所有的URL地址都对应服务器上对应的资源;前端路由:对于单页面应用程序来说,主要通过URL中的hash(#号)来实现不同页面之间的切换,同时,hash有一个特...

Alpine.js 如何火起来的!比 React/Vue 如何?

大家好,很高兴又见面了,我是"高级前端?进阶?",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发!前言前端 JavaScript 框架的创新是这个时代最伟大的技术文化现象之一。Alpine 发音为 /??lpa?n/,中文为阿尔卑斯山、...

Firefox正针对Vue.js进行优化,下版本响应速度将“显著提升”

IT之家 9 月 7 日消息,据 Mozilla 官方博客发文显示,Firefox 浏览器正针对 Vue.js 进行优化,此前 FireFox 浏览器在面向 Vue 3 时遇到了一些性能问题。▲ 图源 Mozilla 官方博客目前开发人员已经对此进行了解决,在 Firefox 118 内部版本中进行...