当前位置: 首页 > article >正文

Leetcode3206:交替组 I

题目描述:

给你一个整数数组 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.kler.cn/a/411943.html

相关文章:

  • python里的数据结构
  • 路面泥泞,坑洼,裂缝,路面损坏,马路牙检测 YOLO标记资源整理
  • windows安全中心,永久卸载工具分享
  • 2024年最新版Java八股文复习
  • 【后端面试总结】MySQL索引
  • Linux或者Docker中时区查询和修改(差8小时问题)
  • 实现List接口的三类-ArrayList -Vector -LinkedList
  • zabbix 图形中文显示乱码问题
  • 前半有序的排序及有序游标
  • 【SpringBoot】Spring Data Redis的环境搭建(win10)
  • 3D建筑模型的 LOD 规范
  • 非协议默认端口的:NAT alg需配置port-mapping
  • 在vue中,根据后端接口返回的文件流实现word文件弹窗预览
  • mydocker
  • 使用Setup Factory将C#的程序打包成安装包
  • WordCloud去掉停用词(fit_words+generate)的2种用法
  • LSTM原理解读与实战
  • 麒麟系统x86安装达梦数据库
  • uniapp中使用Mescroll实现下拉刷新与上拉加载项目实战
  • Win11 22H2/23H2系统11月可选更新KB5046732发布!
  • JAVA实现将PDF转换成word文档
  • 【Z2400011】基于Java+SpringBoo+mysql实现的自习室预订系统
  • <javascript><html>在两个html页面间跳转时使用浏览器本地存储localStorage传递共享参数
  • C# 调用系统级方法复制、移动和删除等操作界面
  • STM32 外设简介
  • 前端开发工程师需要学什么?