【每日一题】LeetCode 2379.得到K个黑块的最少涂色次数(字符串、滑动窗口)

【每日一题】LeetCode 2379.得到K个黑块的最少涂色次数(字符串、滑动窗口)

题目描述

给定一个字符串 blocks,其中每个字符代表一个颜色块,可以是 ‘W’(白色)或 ‘B’(黑色)。你需要找到一个至少包含 k 个连续黑色块的子串。每次操作可以将一个白色块变成黑色块。你的任务是找到至少出现一次连续 k 个黑色块的最少操作次数。

和该题目类似:【每日一题】LeetCode 2024.考试的最大困扰度(字符串、二分查找、前缀和、滑动窗口)

思路分析

这个问题可以通过滑动窗口的方法来解决。我们的目标是在字符串中找到一个长度为 k 的窗口,使得窗口内的黑色块尽可能多,白色块尽可能少。这样,将白色块变成黑色块的操作次数就会最少。

  1. 初始化:首先,我们初始化一个变量 min 来存储最少操作次数,初始值设为最大整数。然后,我们定义两个指针 leftright 来表示窗口的边界,并定义一个变量 count 来记录窗口内白色块的数量。
  2. 填充窗口:我们首先将窗口从左到右扩展到长度 k,同时计算窗口内白色块的数量,并更新 min
  3. 滑动窗口:接着,我们将 right 指针向右移动,每次移动后,如果遇到白色块,则增加 count。同时,将 left 指针向右移动,如果 left 指针指向的块是白色,则减少 count。每次移动后,都更新 min
  4. 返回结果:当 right 指针到达字符串末尾时,循环结束。此时,min 存储的就是最少操作次数。

输入示例

示例 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

代码实现

class Solution {public int minimumRecolors(String blocks, int k) {int min = Integer.MAX_VALUE; // 初始化最少操作次数为最大整数int left = 0, right = 0; // 定义左右指针int count = 0; // 记录窗口内白色块的数量// 填充窗口直到长度为 kfor (right = 0; right < k; right++) {if (blocks.charAt(right) == 'W') {count++; // 如果是白色块,则增加 count}}min = Math.min(count, min); // 更新最小操作次数// 开始滑动窗口for (right = k; right < blocks.length(); right++) {if (blocks.charAt(right) == 'W') {count++; // 如果新增的块是白色,则增加 count}if (blocks.charAt(left) == 'W') {count--; // 如果移除的块是白色,则减少 count}left++; // 移动左指针min = Math.min(count, min); // 更新最小操作次数}return min; // 返回最少操作次数}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/53276.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

dubbo 服务消费原理分析之应用级服务发现

文章目录 前言一、MigrationRuleListener1、迁移状态模型2、Provider 端升级3、Consumer 端升级4、服务消费选址5、MigrationRuleListener.onRefer6、MigrationRuleHandler.doMigrate6、MigrationRuleHandler.refreshInvoker7、MigrationClusterInvoker.migrateToApplicationFi…

硬件工程师求职过程的启示

在技术求职过程中&#xff0c;每一次面试都是一次独特的学习经历&#xff0c;尤其是在硬件工程师的岗位中&#xff0c;面试者往往需要具备广泛的技能和灵活的适应能力。 1. 面试中的全面技能要求 在现代技术行业中&#xff0c;特别是硬件开发岗位&#xff0c;企业对工程师的要…

初识命名空间

1.创建两个命名空间 ip netns add host1 ip netns add host2 2. 查看命名空间 ip netns ls 3 、 创建veth ip -netns host1 link add veth0 type veth peer name host1-peer 4、 查看命名空间接口 ip -netns host1 address 5、 把host1-peer移动到host2命名空间 ip -ne…

ctfshow-nodejs

什么是nodejs Node.js 是一个基于 Chrome V8 引擎的 Javascript 运行环境。可以说nodejs是一个运行环境&#xff0c;或者说是一个 JS 语言解释器 Nodejs 是基于 Chrome 的 V8 引擎开发的一个 C 程序&#xff0c;目的是提供一个 JS 的运行环境。最早 Nodejs 主要是安装在服务器…

SAP B1 基础实操 - 用户定义字段 (UDF)

目录 一、功能介绍 1. 使用场景 2. 操作逻辑 3. 常用定义部分 3.1 主数据 3.2 营销单据 4. 字段设置表单 4.1 字段基础信息 4.2 不同类详细设置 4.3 默认值/必填 二、案例 1 要求 2 操作步骤 一、功能介绍 1. 使用场景 在实施过程中&#xff0c;经常会碰见用户需…

Jmeter使用时小技巧添加“泊松随机定时器“模拟用户思考时间

1、模拟用户思考时间&#xff0c;添加"泊松随机定时器"

HTML 中 a 超链接标签全解析:属性、锚点与伪类

目录 a超链接标签介绍 锚点介绍 页面内锚点 页面外锚点 伪类 a超链接标签介绍 在 HTML 中&#xff0c;<a>标签是一个文本级的标签&#xff0c;同时它还包含伪类&#xff0c;用于根据用户与链接的不同交互状态呈现不同的样式。与之同为文本级标签的<p>&#xff…

SQL Server导入导出

SQL Server导入导出 导出导入 这里已经安装好了SQL Server&#xff0c;也已经创建了数据库和表。现在想导出来给别人使用&#xff0c;所以需要导入导出功能。环境&#xff1a;SQL Server 2012 SP4 如果没有安装&#xff0c;可以查看安装教程&#xff1a; Microsoft SQL Server …

vue2.0中axios请求配置

vue2.0中axios请求配置 一、vue2.0项目中1.配置2.使用 二、vue2.0ts项目中如何配置1.配置2.使用 一、vue2.0项目中 1.配置 // axios.js import axios from axios; import { Message } from element-ui; import router from ../../router/index.js; //创建axios实例const serv…

装WebVideoCreator记录

背景&#xff0c;需要在docker容器内配置WebVideoCreator环境&#xff0c;配置npm、node.js WebVideoCreator地址&#xff1a;https://github.com/Vinlic/WebVideoCreator 配置环境&#xff0c;使用这个教程&#xff1a; linux下安装node和npm_linux离线安装npm-CSDN博客 1…

Android12上新增jar遇到的问题总结

最近在vendor目录下新增jar遇到一个问题&#xff0c;新增jar完全没问题&#xff0c;但是如果在framework/base/service下通过static_lib调用&#xff0c;就会出现如下报错&#xff0c;在SystemUI中调用都不会出现此问题&#xff0c;这个问题应该就是出现在framework/base/servi…

【C语言】---- 复合数据类型之枚举(Enum)

在C语言中&#xff0c;枚举&#xff08;Enum&#xff09;是一种用户定义的数据类型&#xff0c;它允许为一组常量分配有序的值。枚举在编程中经常用于表示一组相关的命名常量&#xff0c;提高程序的可读性和可维护性。 枚举的定义 枚举的定义使用 enum 关键字&#xff0c;它允…

反射: 获取变量类型

更高级的编程语言&#xff0c;提供反射、解释机制&#xff0c;获取对象类型非常方便&#xff0c;因为运行时保存有对象的全部信息&#xff0c;也包括类型&#xff0c;而对于编译型语言而言&#xff0c;变量类型要靠编译期或构造/依赖类型某个存储类型的结构。 不同语言的反射 …

JavaWeb - Mybatis - 基础操作

删除Delete 接口方法&#xff1a; Mapper public interface EmpMapper { //Delete("delete from emp where id 17") //public void delete(); //以上delete操作的SQL语句中的id值写成固定的17&#xff0c;就表示只能删除id17的用户数据 //SQL语句中的id值不能写成…

[数据集][目标检测]西红柿成熟度检测数据集VOC+YOLO格式3241张5类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;3241 标注数量(xml文件个数)&#xff1a;3241 标注数量(txt文件个数)&#xff1a;3241 标注…

GitHub精选|8 个强大工具,助力你的开发和探究工作

本文精选了8个来自 GitHub 的优秀项目&#xff0c;涵盖了 低代码、报表工具、Web 开发、云原生、通知管理、构建系统、生物计算、位置追踪、API 规范和依赖更新等方面&#xff0c;为开发者和研究人员提供了丰富的资源和灵感。 目录 1.防弹 React&#xff1a;构建强大的 Web 应…

第十周:机器学习笔记

第十周机器学习周报 摘要Abstract机器学习——self-attention&#xff08;注意力机制&#xff09;1. 为什么要用self-attention2. self-attention 工作原理2.1 求α的两种方式2.2 attention-score&#xff08;关联程度&#xff09; Pytorch学习1. 损失函数代码实战1.1 L1loss&a…

电路分析 ---- 加法器

1 同相加法器 分析过程 虚短&#xff1a; u u − R G R G R F u O u_{}u_{-}\cfrac{R_{G}}{R_{G}R_{F}}u_{O} u​u−​RG​RF​RG​​uO​ i 1 u I 1 − u R 1 i_{1}\cfrac{u_{I1}-u_{}}{R_{1}} i1​R1​uI1​−u​​&#xff1b; i 2 u I 2 − u R 2 i_{2}\cfrac{u_{…

如何判断小程序是运行在“企业微信”中的还是运行在“微信”中的?

如何判断小程序是运行在“企业微信”中的还是运行在“微信”中的&#xff1f; 目录 如何判断小程序是运行在“企业微信”中的还是运行在“微信”中的&#xff1f; 一、官方开发文档 1.1、“微信小程序”开发文档的说明 1.2、“企业微信小程序”开发文档的说明 1.3、在企业…

无线信道中ph和ph^2的场景

使用 p h ph ph的情况&#xff1a; Rayleigh 分布的随机变量可以通过两个独立且相同分布的零均值、高斯分布的随机变量表示。设两个高斯随机变量为 X ∼ N ( 0 , σ 2 ) X \sim \mathcal{N}(0, \sigma^2) X∼N(0,σ2)和 Y ∼ N ( 0 , σ 2 ) Y \sim \mathcal{N}(0, \sigma^2)…