Bootstrap

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 的值,即交替出现颜色组的数量。
;