欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 游戏 > Leecode刷题C语言之交替组①

Leecode刷题C语言之交替组①

2025/6/6 15:35:15 来源:https://blog.csdn.net/babyiu5201314/article/details/144070418  浏览:    关键词:Leecode刷题C语言之交替组①

执行结果:通过

执行用时和内存消耗如下:

 

 

 

代码如下: 

int numberOfAlternatingGroups(int* colors, int colorsSize) {int res = 0;for (size_t i = 0; i < colorsSize; i++) {if (colors[i] != colors[(i - 1 + colorsSize) % colorsSize] && colors[i] != colors[(i + 1) % colorsSize]) {res += 1;}}return res;
}

 解题思路:

这段代码的目的是计算一个数组 colors 中交替出现颜色组的数量。这里“交替出现颜色组”的定义是指某个颜色的元素,其相邻的元素(无论是前一个还是后一个)的颜色都与它不同。具体思路如下:

  1. 初始化结果变量
    • 定义一个整数变量 res,用于存储交替出现颜色组的数量,初始值为0。
  2. 遍历数组
    • 使用一个 for 循环遍历数组 colors,其中 i 是当前元素的索引。
    • 由于数组是循环的(即首尾相连),所以在比较当前元素与其前一个元素时,需要使用取模运算 (i - 1 + colorsSize) % colorsSize 来确保索引不会越界。这样做是为了模拟数组是环形或循环的,使得最后一个元素的前一个元素是第一个元素。
    • 同样地,比较当前元素与其后一个元素时,使用 (i + 1) % colorsSize 来确保索引不会越界。
  3. 检查交替条件
    • 在每次循环中,检查当前元素 colors[i] 是否与其前一个元素 colors[(i - 1 + colorsSize) % colorsSize] 和后一个元素 colors[(i + 1) % colorsSize] 的颜色都不同。
    • 如果当前元素确实与相邻的两个元素颜色都不同,则满足交替出现的条件,将 res 的值加1。
  4. 返回结果
    • 循环结束后,返回 res 的值,即交替出现颜色组的数量。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词