首页 > 其他分享 >力扣---2379. 得到 K 个黑块的最少涂色次数

力扣---2379. 得到 K 个黑块的最少涂色次数

时间:2023-03-09 09:34:10浏览次数:40  
标签:arr blocks 黑块 min int res --- ++ 涂色

给你一个长度为 n 下标从 0 开始的字符串 blocks ,blocks[i] 要么是 'W' 要么是 'B' ,表示第 i 块的颜色。字符 'W' 和 'B' 分别表示白色和黑色。
给你一个整数 k ,表示想要 连续 黑色块的数目。
每一次操作中,你可以选择一个白色块将它 涂成 黑色块。
请你返回至少出现 一次 连续 k 个黑色块的 最少 操作次数。

示例 1:
输入:blocks = "WBBWWBBWBW", k = 7
输出:3
解释:
一种得到 7 个连续黑色块的方法是把第 0 ,3 和 4 个块涂成黑色。
得到 blocks = "BBBBBBBWBW" 。
可以证明无法用少于 3 次操作得到 7 个连续的黑块。
所以我们返回 3 。

示例 2:
输入:blocks = "WBWBBBW", k = 2
输出:0
解释:
不需要任何操作,因为已经有 2 个连续的黑块。
所以我们返回 0 。

提示:
    n == blocks.length
    1 <= n <= 100
    blocks[i] 要么是 'W' ,要么是 'B' 。
    1 <= k <= n
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/minimum-recolors-to-get-k-consecutive-black-blocks
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


 

基础滑动窗口题

用维护窗口的长度总是等于k - 1,用一个额外变量存储窗口中需要涂色的块('W' 的数量),如果进去'W',出来'B',则数量加一,反之数量减一,其他情况保持不变。

class Solution {
    public int minimumRecolors(String blocks, int k) {
        int p1 = 0;
        int min = 0;
        char[] arr = blocks.toCharArray();
        for (int i = 0; i < k; ++ i) {
            if (arr[i] == 'W') {
                ++ min;
            }
        }
        int res = min;
        for (int i = k; i < arr.length; ++ i) {
            if (arr[i] == 'W') {
                if (arr[p1] == 'B') {
                    min ++;
                }
            } else {
                if (arr[p1] == 'W') {
                    -- min;
                    res = Math.min(res, min);
                }
            }
            ++ p1;
        }
        return res < 0 ? 0 : res;
    }
}

标签:arr,blocks,黑块,min,int,res,---,++,涂色
From: https://www.cnblogs.com/allWu/p/17197105.html

相关文章

  • 23-3-9 基金学习笔记-创金合信医疗保健股票
    23-3-9 基金学习笔记基金业绩迅速上涨的时候,都是基金规模小的时候。创金合信医疗保健股票  基金规模迅速上涨的时候,都是业绩开始摆烂的时候。如下20.6.30从四千......
  • linux基础(1)--运行级别及root命令找回
    1系统运行级别0:关机1:单用户【找回丢失密码】2:多用户状态没有网络服务3:多用户状态有网络服务4:系统未使用保留给用户5:图形界面6:系统重启其中,最常用的为3和5。 有关......
  • 2023-3-8-pytorch关于CNN的描述与代码,ai对话生成的
    左脚踩右脚上天了是什么搞笑笑话这不是搞笑笑话,而是一个玩笑语言游戏。“左脚踩右脚上天了”实际上是一个不合逻辑的语句,因为脚无法踩在自己的脚上,更不可能踩上天。这种语......
  • 软件测试基础-软件测试基本流程
    注:软件测试流程是根据遇到的各种问题不断优化和提高的,公司/项目不同,流程也会不同。以下为非通用标准,仅供大家参考。  目的: 采用通用的测试流程,能高效、高质量的完成......
  • simpleini库的介绍和使用(面向业务编程-格式处理)
    simpleini库的介绍和使用(面向业务编程-格式处理)介绍simpleini是一个跨平台的ini格式处理库,提供了一些简单的API来读取和写入ini风格的配置文件。它支持ASCII、MBCS和Unic......
  • ElasticSearch 实现分词全文检索 - 测试数据准备
    目录ElasticSearch实现分词全文检索-概述ElasticSearch实现分词全文检索-ES、Kibana、IK安装ElasticSearch实现分词全文检索-Restful基本操作ElasticSearch......
  • 【补题】2022-2023 ACM-ICPC German Collegiate Programming Contest (GCPC 2022)
    题目链接https://codeforces.com/gym/104059A.AlternativeArchitecture思路简单题,但要注意细节。给的方格很干扰思考,事实上注意到顶点指的是四个角上的圆圈,我们将长......
  • 02-RabbitMQ的安装和配置
    RabbitMQ的安装和配置一、安装依赖环境在线安装依赖环境:yuminstallbuild-essentialopensslopenssl-develunixODBCunixODBC-develmakegccgcc-c++kernel-devel......
  • 基于JSP+javaBean的留言板--改进(附源码)
    一、系统的主要功能和特点系统主要实现了以JSP和JavaBean为基础的留言板。主要包括登录、登陆检查、增加留言、查看全部留言信息、查看指定留言信息等功能实现了数据的读......
  • k8s 练习 - node 亲和和反亲和
    假设有3 个节点,具有一下标签:节点名标签w1env=prod,plan=a1,kubernetes.io/hostname=w1w2env=dev,plan=a2,kubernetes.io/hostname=w2w3env=test,plan=a3,kubernetes......