LeetCode 2379.得到K个黑块的最少涂色次数

题目

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

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

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

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

思路:定长滑动窗口 入 更新 出

代码

java 复制代码
class Solution {
    public int minimumRecolors(String blocks, int k) {
        int n = blocks.length();
        char[] block = blocks.toCharArray();
        int ans = 0;
        int num = 0;
        for (int i = 0; i < n; i++) {
            if (block[i] == 'B')
                num++;
            if (i < k - 1)
                continue;
            ans = Math.max(ans, num);
            if (block[i - k + 1] == 'B')
                num--;
        }
        return k - ans;
    }
}

性能

时间复杂度o(n)

空间复杂度o(1)

相关推荐
CoovallyAIHub18 小时前
181小时视频丢给GPT-5,准确率只有15%——南大联合NVIDIA等五校发布多模态终身理解数据集
深度学习·算法·计算机视觉
CoovallyAIHub18 小时前
CVPR 2026 | GS-CLIP:3D几何先验+双流视觉融合,零样本工业缺陷检测新SOTA,四大3D工业数据集全面领先!
深度学习·算法·计算机视觉
xlp666hub19 小时前
Leetcode 第三题:用C++解决最长连续序列
c++·leetcode
有意义21 小时前
深度拆解分割等和子集:一维DP数组与倒序遍历的本质
前端·算法·面试
xlp666hub1 天前
Leetcode第二题:用 C++ 解决字母异位词分组
c++·leetcode
用户726876103371 天前
解放双手的健身助手:基于 Rokid AR 眼镜的运动计时应用
算法
Wect1 天前
LeetCode 17. 电话号码的字母组合:回溯算法入门实战
前端·算法·typescript
xlp666hub2 天前
Leetcode第一题:用C++解决两数之和问题
c++·leetcode
ZhengEnCi2 天前
08c. 检索算法与策略-混合检索
后端·python·算法