Leetcode3206:交替组 I

devtools/2024/11/29 10:28:02/

题目描述:

给你一个整数数组 colors ,它表示一个由红色和蓝色瓷砖组成的环,第 i 块瓷砖的颜色为 colors[i] 

colors[i] == 0 表示第 i 块瓷砖的颜色是 红色 。
colors[i] == 1 表示第 i 块瓷砖的颜色是 蓝色 。
环中连续 3 块瓷砖的颜色如果是 交替 颜色(也就是说中间瓷砖的颜色与它 左边 和 右边 的颜色都不同),那么它被称为一个 交替 组。

请你返回 交替 组的数目。

注意 ,由于 colors 表示一个 环 ,第一块 瓷砖和 最后一块 瓷砖是相邻的。

代码思路:

这个代码的目的是计算在一个由整数数组 colors 表示的环形序列中,有多少个“交替颜色组”。每个“交替颜色组”由三个连续的元素组成,且满足以下条件:第一个元素的颜色不同于第二个元素的颜色,同时第二个元素的颜色也不同于第三个元素的颜色。由于序列是环形的,数组末尾的元素与数组开头的元素被视为相邻。

以下是代码的详细思路:

  1. 初始化变量
    • i:用于遍历数组的索引。
    • a:表示当前索引 i 的下一个索引(即 i+1),但由于是环形数组,使用取模运算 (i + 1) % colorsSize 来确保索引不会超出数组边界。
    • b:表示当前索引 i 的下两个索引(即 i+2),同样使用取模运算 (i + 2) % colorsSize 来处理环形结构。
    • count:用于记录满足条件的“交替颜色组”的数量,初始化为 0。
  2. 遍历数组
    • 使用一个 for 循环遍历数组 colors,循环次数为数组的长度 colorsSize
  3. 计算下一个和下两个索引
    • 在每次循环中,通过 (i + 1) % colorsSize 和 (i + 2) % colorsSize 计算当前元素 colors[i] 的下一个元素 colors[a] 和下两个元素 colors[b] 的索引。
  4. 判断交替颜色条件
    • 检查当前元素 colors[i] 的颜色是否不同于下一个元素 colors[a] 的颜色,并且下一个元素 colors[a] 的颜色是否也不同于下两个元素 colors[b] 的颜色。
    • 如果这两个条件都满足,说明找到了一个“交替颜色组”,此时将 count 加 1。
  5. 返回结果
    • 循环结束后,返回 count,即满足条件的“交替颜色组”的总数。

代码实现:

int numberOfAlternatingGroups(int* colors, int colorsSize)
{int i, a, b, count = 0;for (i = 0; i < colorsSize; i++) //循环次数为数组的长度{a = (i + 1) % colorsSize; //中间瓷砖b = (i + 2) % colorsSize; //求余表示数组循环if (colors[i] != colors[a] && colors[a] != colors[b]) //判断交替颜色count++; //计数}return count;
}


http://www.ppmy.cn/devtools/137895.html

相关文章

相亲交友小程序项目介绍

一、项目背景 在当今快节奏的社会生活中&#xff0c;人们忙于工作和事业&#xff0c;社交圈子相对狭窄&#xff0c;寻找合适的恋爱对象变得愈发困难。相亲交友作为一种传统而有效的社交方式&#xff0c;在现代社会依然有着巨大的需求。我们的相亲交友项目旨在为广大单身人士提…

C++笔记之单例模式与静态方法的使用辨析及代码规范

C++笔记之单例模式与静态方法的使用辨析及代码规范 code review! 文章目录 C++笔记之单例模式与静态方法的使用辨析及代码规范一.示例代码二.讲解2.1.代码规范2.1.1.单例模式实现2.1.2.静态方法实现2.1.3.单例模式结合静态方法2.2.总结一.示例代码 // 使用 set 方法设置值(通…

蓝桥杯练习题

目录 1.劲舞团 2.数字诗意 3.封闭图形个数 4.回文数组 欢迎 1.劲舞团 0劲舞团 - 蓝桥云课 #include <iostream> using namespace std; int main() {int num1,M0;long long c[1000000];int cnt0;string a,b ;while(cin>>a>>b>>c[cnt])//系统自动输入…

【设计模式】【行为型模式(Behavioral Patterns)】之责任链模式(Chain of Responsibility Pattern)

1. 设计模式原理说明 责任链模式&#xff08;Chain of Responsibility Pattern&#xff09; 是一种行为设计模式&#xff0c;它允许你将请求沿着处理者链进行发送。每个处理者都可以处理请求&#xff0c;或者将其传递给链上的下一个处理者。这种模式使得多个对象都有机会处理请…

力扣面试题 26 - 翻转数位

题目&#xff1a; 给定一个32位整数 num&#xff0c;你可以将一个数位从0变为1。请编写一个程序&#xff0c;找出你能够获得的最长的一串1的长度。 示例 1&#xff1a; 输入: num 1775(11011101111)输出: 8示例 2&#xff1a; 输入: num 7(0111)输出: 4 思路&#xff1a; …

flink学习(11)——state

state ————保存历史数据 有状态计算和无状态计算 - 无状态计算:- 不需要考虑历史数据, 相同的输入,得到相同的输出!- 如:map, 将每个单词记为1, 进来一个hello, 得到(hello,1),再进来一个hello,得到的还是(hello,1) - 有状态计算:- 需要考虑历史数据, 相同的输入,可能会…

探索天空中的“名字”——用Landsat影像记录你的名字形状!

大家好&#xff01;今天我发现了一个特别有趣的工具——NASA官网上有一个功能&#xff0c;允许你输入自己的名字&#xff0c;然后它会根据Landsat卫星影像显示出与你名字形状相符的地形图。是不是很酷&#xff1f;&#x1f389; &#x1f30d; Landsat影像的神奇之处Landsat是N…

Apache SSI 远程命令执行漏洞

目录 1、漏洞描述 2、访问页面 3、dirsearch工具爆破出上传目录 ​编辑 4、登录后台 5、上传shell.shtml一句话木马文件 6、拿到flag 1、漏洞描述 在测试任意文件上传漏洞的时候&#xff0c;目标服务端可能不允许上传php后缀的文件。如果目标服务器开启了SSI与CGI支持&a…