您好,欢迎来到五一七教育网。
搜索
您的当前位置:首页Leetcode3208:交替组 II

Leetcode3208:交替组 II

来源:五一七教育网

题目描述:

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

  • colors[i] == 0 表示第 i 块瓷砖的颜色是 红色 。
  • colors[i] == 1 表示第 i 块瓷砖的颜色是 蓝色 。

环中连续 k 块瓷砖的颜色如果是 交替 颜色(也就是说除了第一块和最后一块瓷砖以外,中间瓷砖的颜色与它 左边 和 右边 的颜色都不同),那么它被称为一个 交替 组。

请你返回 交替 组的数目。

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

代码思路:

这个代码的目的是计算在一个环形数组中,有多少长度为 k 的交替颜色组。环形数组意味着数组末尾和开头是相连的。函数的参数包括一个整数数组 colors,数组的大小 colorsSize,以及目标长度 k。下面是这个代码的思路分析:

代码实现:

int numberOfAlternatingGroups(int* colors, int colorsSize, int k) {
    //可以将前k-1个加在最后,以第i块开头为标记
    int l = 0;
    int r = 1;
    int cnt = 1; //交替颜色的长度,起始为1
    int ret = 0;
    while (r < colorsSize + k - 1) {
        if (colors[(r % colorsSize)] ^ colors[(r - 1) % colorsSize]) {
            cnt++;
            if (cnt == k) {
                ret++;
                l++;
                cnt--;
            }
        } else {
            l = r;
            cnt = 1;
        }
        r++;
    }
    return ret;
}

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 517ttc.cn 版权所有 赣ICP备2024042791号-8

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务