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)

相关推荐
papership7 分钟前
入门级-数据结构-2、简单树:二叉树的遍历(前序、中序、后序)
数据结构·算法
WWW65267 分钟前
代码随想录 打卡第五十四天
数据结构·c++·算法
happymaker06267 分钟前
LeetCodeHot100——15.三数之和
数据结构·算法
墨白曦煜9 分钟前
算法实战笔记:空间换时间的黑魔法——单调栈全景解析(十一)
java·笔记·算法
大模型最新论文11 分钟前
小红书提出 RedKnot:分头处理 kv 缓存,延时降低 60%效果还提升
算法
随意起个昵称17 分钟前
线性dp-LIS题目6(友好城市,二分优化)
算法·动态规划
数据科学小丫22 分钟前
算法:随机森林算法
算法·随机森林·机器学习
Samson Bruce29 分钟前
【初高中数学】
线性代数·数学·算法·机器学习
redaijufeng30 分钟前
我在C++中深入理解了继承,收获颇丰
java·c++·算法
承渊政道30 分钟前
【MySQL数据库学习】MySQL基本查询(下)
数据库·学习·mysql·leetcode·bash·数据库开发·数据库系统