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)

相关推荐
WolfGang0073211 分钟前
代码随想录算法训练营 Day29 | 动态规划 part02
算法·动态规划
样例过了就是过了2 分钟前
LeetCode热题100 跳跃游戏 II
c++·算法·leetcode·贪心算法·动态规划
rit84324993 分钟前
基于NSGA-II的多目标优化算法(MATLAB实现)
开发语言·算法·matlab
香蕉鼠片3 分钟前
第三大的数
数据结构·算法·leetcode
汀、人工智能4 分钟前
[特殊字符] 第28课:相交链表
数据结构·算法·链表·数据库架构··相交链表
计算机安禾7 分钟前
【数据结构与算法】第32篇:交换排序(一):冒泡排序
c语言·数据结构·c++·算法·链表·排序算法·visual studio code
lxh011310 分钟前
蜗牛排序题解
javascript·算法
airuike12324 分钟前
高性能MEMS IMU:重构无人机飞行控制核心
人工智能·算法·重构·无人机
小辉同志28 分钟前
79. 单词搜索
开发语言·c++·leetcode·回溯
娇娇爱吃蕉蕉.29 分钟前
类和对象的默认成员函数
c语言·开发语言·c++·算法