【每日一题Day141】LC2379得到 K 个黑块的最少涂色次数 | 滑动窗口

简介: 【每日一题Day141】LC2379得到 K 个黑块的最少涂色次数 | 滑动窗口

得到 K 个黑块的最少涂色次数【LC2379】

给你一个长度为 n 下标从 0 开始的字符串 blocksblocks[i] 要么是 'W' 要么是 'B' ,表示第 i 块的颜色。字符 'W''B' 分别表示白色和黑色。

给你一个整数 k ,表示想要 连续 黑色块的数目。

每一次操作中,你可以选择一个白色块将它 涂成 黑色块。

请你返回至少出现 一次 连续 k 个黑色块的 最少 操作次数。

思路:

使用一个长度k 的滑动窗口,记录滑动窗口中白色块的数量,即为该滑动窗口中获得连续k kk个黑色块的操作数,枚举所有的滑动窗口,记录最少操作次数,返回即可


实现

class Solution {
    public int minimumRecolors(String blocks, int k) {
        int n = blocks.length();
        int count = 0;
        for (int i = 0; i < k; i++){
            if (blocks.charAt(i) == 'W'){
                count++;
            }
        }
        int min = count;
        for (int j = 0; j < n - k; j++){
            if (blocks.charAt(j) == 'W'){
                count--;
            }
            if (blocks.charAt(j + k) == 'W'){
                count++;
            }
            min = Math.min(count, min);
        }
        return min;
    }
}

image.png

目录
相关文章
|
7月前
【每日一题Day312】LC2240买钢笔和铅笔的方案数 | 完全背包 数学
【每日一题Day312】LC2240买钢笔和铅笔的方案数 | 完全背包 数学
63 0
|
7月前
【每日一题Day221】LC2455可被三整除的偶数的平均值 | 模拟
【每日一题Day221】LC2455可被三整除的偶数的平均值 | 模拟
55 0
|
7月前
|
人工智能 BI
【每日一题Day354】LC2316统计无向图中无法互相到达点对数 | 并查集
【每日一题Day354】LC2316统计无向图中无法互相到达点对数 | 并查集
61 0
|
7月前
|
存储
每日一题——滑动窗口的最大值
每日一题——滑动窗口的最大值
|
7月前
|
存储 算法
【每日一题Day310】LC1654到家的最少跳跃次数 | BFS
【每日一题Day310】LC1654到家的最少跳跃次数 | BFS
52 0
|
7月前
【每日一题Day319】LC2594修车的最少时间 | 二分答案
【每日一题Day319】LC2594修车的最少时间 | 二分答案
39 0
|
7月前
【每日一题Day350】LC2652倍数求和 | 数学+容斥原理
【每日一题Day350】LC2652倍数求和 | 数学+容斥原理
47 0
|
7月前
【每日一题Day198】LC1419数青蛙 | 计数
【每日一题Day198】LC1419数青蛙 | 计数
59 0
|
7月前
【每日一题Day314】LC1921消灭怪物的最大数量 | 贪心+排序
【每日一题Day314】LC1921消灭怪物的最大数量 | 贪心+排序
56 0
|
7月前
【每日一题Day192】LC1033移动石子直到连续 | 分类讨论 贪心
【每日一题Day192】LC1033移动石子直到连续 | 分类讨论 贪心
38 0