Leetcode3206:交替组 I

embedded/2024/11/27 17:44:23/

题目描述:

给你一个整数数组 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/embedded/140959.html

相关文章

什么是MyBatis?

MyBatis简介 MyBatis是一款优秀的持久层框架&#xff0c;用于简化Java应用程序对数据库的操作。它曾是Apache的一个开源项目&#xff0c;名为iBatis&#xff0c;2010年迁移到Google Code并改名为MyBatis&#xff0c;2013年11月又迁移到了GitHub。 一、MyBatis的作用 在JavaE…

C#水仙花

打印出所有的“水仙花数”&#xff0c;所谓“水仙花数”是指一个三位数&#xff0c;其各位数字立方和等于该数本身。例如&#xff1a;153是一个“水仙花数”&#xff0c;因为1531*1*1&#xff0b;5*5*5&#xff0b;3*3*3 首先是3位数那就是100-999&#xff0c;遍历它们&#…

【ArcGIS Pro】实现一下完美的坐标点标注

在CAD里利用湘源可以很快点出一个完美的坐标点标注。 但是在ArcGIS Pro中要实现这个效果却并不容易。 虽然有点标题党&#xff0c;这里就尽量在ArcGIS Pro中实现一下。 01 标注实现方法 首先是准备工作&#xff0c;准备一个点要素图层&#xff0c;包含xy坐标字段。 在地图框…

全面提升系统安全:禁用不必要服务、更新安全补丁、配置防火墙规则的实战指南

在当前的网络环境中,系统面临的安全威胁不断增加。为了防止潜在的攻击和漏洞利用,对操作系统进行安全加固是运维工作的重中之重。本文将从禁用不必要的服务、及时更新安全补丁、以及配置防火墙规则三个方面,详细讲解如何全面提升系统的安全性。 一、禁用不必要的服务 为什…

【C/C++】数据库链接入门教程:从零开始的详细指南!MySQL集成与操作

文章目录 环境配置&#xff1a;搭建开发环境的基础步骤2.1 安装MySQL数据库2.2 配置C/C开发环境2.3 下载并安装MySQL Connector/C 基础操作&#xff1a;实现C/C与MySQL的基本交互3.1 建立数据库连接3.2 执行SQL语句3.3 处理查询结果 进阶技巧&#xff1a;提升数据库操作效率与安…

SQL 复杂查询

目录 复杂查询 一、目的和要求 二、实验内容 &#xff08;1&#xff09;查询出所有水果产品的类别及详情。 查询出编号为“00000001”的消费者用户的姓名及其所下订单。&#xff08;分别采用子查询和连接方式实现&#xff09; 查询出每个订单的消费者姓名及联系方式。 在…

RL78/G15 Fast Prototyping Board Arduino IDE 平台开发过程

这是一篇基于RL78/G15 Fast Prototyping Board的Arduino IDE开发记录 RL78/G15 Fast Prototyping Board硬件简介&#xff08;背景&#xff09;基础测试&#xff08;方法说明/操作说明&#xff09;开发环境搭建&#xff08;方法说明/操作说明代码结果&#xff09;Arduino IDE RL…

如何用通义灵码快速绘制流程图?

使用通义灵码快速绘制流程图&#xff1f;新功能体验 不想读前人“骨灰级”代码&#xff0c;不想当“牛马”程序员&#xff0c;想像看图片一样快速读复杂代码和架构&#xff1f; 通义灵码已经支持代码逻辑可视化&#xff0c;可以把你的每段代码画成流程图。像个脑图工具一样帮你…