LeetCode·每日一题·2379. 得到 K 个黑块的最少涂色次数·滑动窗口

作者:小迅

链接:https://leetcode.cn/problems/minimum-recolors-to-get-k-consecutive-black-blocks/solutions/2156537/hua-dong-chuang-kou-zhu-shi-chao-ji-xian-9ahk/

来源:力扣(LeetCode)

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

题目

LeetCode·每日一题·2379. 得到 K 个黑块的最少涂色次数·滑动窗口_第1张图片

示例

LeetCode·每日一题·2379. 得到 K 个黑块的最少涂色次数·滑动窗口_第2张图片

思路

题意 -> 给定一个字符串,修改任意位置使得出现连续 k 个 B 字符,返回最少修改次数

要求 k 个连续 B 字符,那么直接维护一个 k 长度的滑动窗口,实时记录当前 窗口中的 W 字符个数,每次移动一次窗口,就记录W字符的个数,并保存最小值,W字符的个数表示要修改的次数。其中此窗口为定长窗口

代码注释超级详细

代码


#define MIN(a, b) ((a) < (b) ? (a) : (b))
int minimumRecolors(char * blocks, int k){
    int len = strlen(blocks);
    int min = len;
    int b = 0;
    for (int i = 0, j = 0; i < len; ++i) {
        if (blocks[i] - 'W' == 0) {//记录窗口W个数
            b++;
        }
        if (i - j + 1 == k) {//移动窗口
            min = MIN(min, b);//保存最小值
            if (blocks[j] - 'W' == 0) {
                b--;
            }
            j++;
        }
    }
    return min;
}

作者:小迅
链接:https://leetcode.cn/problems/minimum-recolors-to-get-k-consecutive-black-blocks/solutions/2156537/hua-dong-chuang-kou-zhu-shi-chao-ji-xian-9ahk/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

你可能感兴趣的:(LeetCode刷题笔记,职场和发展)