Leetcode 2379. 得到 K 个黑块的最少涂色次数
目录
一、题目内容和对应链接
1.题目对应链接
2.题目内容
二、我的想法
三、其他人的题解
一、题目内容和对应链接
1.题目对应链接
Leetcode 2379. 得到 K 个黑块的最少涂色次数
2.题目内容
给你一个长度为 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.length1 <= n <= 100blocks[i]要么是'W',要么是'B'。1 <= k <= n
二、我的想法
1.最开始想的是,遍历 blocks ,先求出最大的连续 "B" 有多少个。如果这个数大于 k 就直接返回 0 ,否则再遍历。
之后又想干脆一次遍历,求出每块的 B 和 W 都有多少个,之后再看两个 B 中间的 W 又多少,连起来能不能满足 k 个数。
大致代码如下:
class Solution:def minimumRecolors(self, blocks: str, k: int) -> int:blockslen = len(blocks)maxcontinue = 0listblock = list()write = black = 0for i in range(0, blockslen):if i == 0:if blocks[0] == "W":write += 1flag = "W"else: black += 1flag = "B"else:if blocks[i] == "W":write += 1if black:listblock.append(black)black = 0else:black += 1 if write:listblock.append(write)maxcontinue = max(maxcontinue,black)write = 0if k <= maxcontinue:return 0if black:listblock.append(black)if write:listblock.append(write)print(flag,listblock)
但是明显不太行。
2.看了下题解的第二行字:滑动窗口,还没往下看我就一下子悟了:
我干脆设一个 i 和 j ,i 到 j 的长度为 k ,i 从 0 开始,j 的最长为 blocks 的长度。
就相当于限定 k 个块,这个块每次往后移动 1 下,判断移动过程中限定的字符串中有几个 W ,最小的 W 的个数即为所求
class Solution:def minimumRecolors(self, blocks: str, k: int) -> int:blockslen = len(blocks)minhandle = blocksleni = 0 j = i + kwhile j <= blockslen:white = blocks[i:j].count("W")minhandle = min(white, minhandle)i += 1j += 1return minhandle
三、其他人的题解
官方 : 滑动窗口
ylb : 滑动窗口
山寨功夫侠 : 前缀和
相关文章:
Leetcode 2379. 得到 K 个黑块的最少涂色次数
目录 一、题目内容和对应链接 1.题目对应链接 2.题目内容 二、我的想法 三、其他人的题解 一、题目内容和对应链接 1.题目对应链接 Leetcode 2379. 得到 K 个黑块的最少涂色次数 2.题目内容 给你一个长度为 n 下标从 0 开始的字符串 blocks ,blocks[i] 要…...
[深入理解SSD系列 闪存实战2.1.3] 固态硬盘闪存的物理学原理_NAND Flash 的读、写、擦工作原理
2.1.3.1 Flash 的物理学原理与发明历程 经典物理学认为 物体越过势垒,有一阈值能量;粒子能量小于此能量则不能越过,大于此能 量则可以越过。例如骑自行车过小坡,先用力骑,如果坡很低,不蹬自行车也能 靠惯性过去。如果坡很高,不蹬自行车,车到一半就停住,然后退回去。 …...
总结:Linux内核相关
一、介绍看eBPF和Cilium相关内容时,碰到Cilium是运行在第 3/4 层,不明白怎么做到的,思考原理的时候就想到了内容,本文记录下内核相关知识。https://www.oschina.net/p/cilium?hmsraladdin1e1二、Linux内核主要由哪几个部分组成Li…...
flutter工程创建过程中遇到一些问题。
安装环境版本:JDK7.-JDK 8 Andriod SDK 10 flutter 版本 3.0 1.当创建完后flutter工程后会遇到 run gradle task assemlble Debug 的问题,需要设置远程仓库,共需要修改三个地方build.gradle两处以及flutter 下面的D:\FVM\versions\3.0.0\pac…...
记录实现操作系统互斥锁的一次思考
今天实现操作系统互斥锁的时候遇到一个有趣的问题。 场景 有两个进程分别名为 taskA,taskB,采取时间片轮转的方式交替运行——也即维护了一个 ready_queue,根据时钟中断来 FIFO 地调度任务。它们的任务是无限循环调用 sys_print() 来打印自…...
计算机SCI期刊的分值是什么意思? - 易智编译EaseEditing
影响因子(Impact Factor,IF)是美国ISI(科学信息研究所)的JCR(期刊引证报告)中的一项数据。 即某期刊前两年发表的论文在统计当年的被引用总次数除以该期刊在前两年内发表的论文总数。这是一个国际上通行的期刊评价指标。 例如,某期刊2005年影…...
5MW风电永磁直驱发电机-1200V直流并网MATLAB仿真模型
MATLAB2016b运行。主体模型:风机传动模块、PMSG模块、蓄电池模块、超级电容模块、无穷大电源。蓄电池控制、风机控制、逆变器控制。风机输出功率:直流母线电压:逆变器输出电压:逆变器输出电流:混合储能荷电状态&#x…...
10 个常见的 JavaScript 面试问题以及如何回答它们
你在准备 JavaScript 面试吗?别再看了!本文将介绍10 个常见的 JavaScript 面试问题以及如何在代码示例和解释的帮助下回答这些问题。1. JavaScript 中的提升是什么?提升是 JavaScript 中的一种行为,其中变量和函数声明被移动到其作…...
字节跳动-今日头条后端开发一面面经
飞书50min 1、实习经历? 2、参加竞赛经历? 3、TCP和UDP的区别? 4、cookie和session的区别? 5、session如何做分布式? 6、概率题目,A和B轮流抛硬币,谁先抛到正面就获胜,A先抛硬币&…...
再见 ETHDenver 2023
我们来一起回顾Web3中规模最大,持续时间最长的以太坊史诗级建造周我们正在庆祝#YearoftheSpork,并借助 Web3 中最大的以太坊社区活动之一拉开了黑客马拉松赛季的序幕。ETH Denver 旨在围绕一个共同的目标聚集了志同道合的人,我们非常高兴今年…...
阿里云dataworks表操作
–odps sql –– –author:宋文理 –create time: –– 创建表 创建非分区表、分区表、外部表或聚簇表。 限制条件 分区表的分区层级不能超过6级。例如某张表以日期为分区列,分区层级为年/月/周/日/时/分。 一张表允许的分区个数支持按照具体的项目配置,…...
【latex】总结最近使用到的画图、表格及公式操作
前言 推荐使用overleaf写latex文章,内含很多会议/期刊的模板,可以直接套用。 https://www.overleaf.com下文都是在写论文过程中比较头疼的部分,有人建议我写完文章,最后再调整格式。但图片过大看起来实在是不适~ 插入图片 \beg…...
excel表格数字乱码怎么恢复正常
excel表格数字乱码怎么恢复正常?作为可以进行数据存储、提取、计算的excel表格,经常会遇到excel表格数字乱码这一情况。这可能是由于输入的数字位数较多,数字出现乱码。出现这种情况将会大大影响我们的工作。那么我们该怎么办?这里小编将为您带来excel…...
泰山众筹电商模式的分析
泰山众筹模式是电商平台营销玩法,市场上高活跃度的现象也证实了众筹模式的口碑,结合社交电商的模型,会员和产品销量都会得到飞跃,并且这样结合以后,泰山众筹模式也会更长久、合理,以及可持续。 泰山众筹模…...
[算法]归并排序
参考:《漫画算法-小灰的算法之旅》 目录 参考:《漫画算法-小灰的算法之旅》 1、什么是归并排序 2、归并的具体操作 3、代码 4、时间复杂度和空间复杂度 5、归并排序是稳定排序 1、什么是归并排序 归并排序就像是组织一场元素之间的“比武大会”&…...
【UE4 RTS游戏】05-自定义日期和时间
效果步骤打开项目设置,重新设置玩家状态类为“MyGameState”打开“MyGameState”,点击类设置,选中父类为“GameStateBase”接着创建一些变量:(1)“TimeUnit”,浮点型,私有࿰…...
ES的restful风格的HTTP方法详解
ES的restful风格的HTTP方法详解 一、概述 restful是一种设计风格,用于构建Web服务和API。 在restful风格中,HTTP请求方法(如GET、POST、PUT、DELETE)和URL(统一资源定位符)被用来定义服务端资源的…...
第十三章 opengl之模型(导入3D模型)
OpenGL模型导入3D模型优化使用3D模型模型 使用Assimp并创建实际的加载和转换代码。Model类结构如下: class Model {public:/* 函数 */Model(char *path){loadModel(path);}void Draw(Shader shader); private:/* 模型数据 */vector<Mesh> meshes;st…...
html标签表示!
html是什么?HTML全称为超文本标记语言,是一种标记语言。包括一系列标签,通过这些标签可以将网络上的文档格式统一,使分散的Internet资源连接为一个逻辑整体。HTML文本是由HTML命令组成的描述性文本,HTML命令可以说明文…...
前端优化,webpack打包删除无用文件,并附上批量删除文件脚本!非常好用
前言 大家可能在webpack打包项目过程中,常遇见一些无用的图片,js文件,怎样能够自动检测哪些是无用的文件呢?本文中介绍使用插件useless-files-webpack-plugin查找无用文件,在terminal中删除,附加bat批量删…...
OpenClaw Gateway智能守护者:双触发自愈与AI诊断实践
1. 项目概述:一个为OpenClaw Gateway设计的智能守护者如果你在运维一个基于OpenClaw Gateway的服务,大概率经历过这样的深夜惊魂:手机突然收到告警,提示网关服务挂了,然后你不得不从床上爬起来,摸黑打开电脑…...
JPlag:源代码相似性检测与抄袭识别的核心技术解析
JPlag:源代码相似性检测与抄袭识别的核心技术解析 【免费下载链接】JPlag State-of-the-Art Source Code Plagiarism & Collusion Detection. Check for plagiarism in a set of programs. 项目地址: https://gitcode.com/gh_mirrors/jp/JPlag JPlag是一…...
仅限高校认证用户开放的NotebookLM高级功能:文献智能比对、跨语种摘要生成、假设推演沙盒(内测通道明日关闭)
更多请点击: https://intelliparadigm.com 第一章:NotebookLM学术研究应用案例 文献综述自动化生成 NotebookLM 可基于用户上传的 PDF 格式学术论文(如 arXiv 预印本、期刊 PDF),自动提取核心论点、方法论与实验数据…...
在Serv00共享主机上部署SOCKS5代理:原理、部署与优化指南
1. 项目概述与核心价值最近在折腾一些需要稳定网络连接的自托管服务时,遇到了一个经典难题:如何在资源受限的共享主机环境里,搭建一个轻量、稳定且可控的网络代理通道。这让我想起了之前在社区里看到的一个项目——cmliu/socks5-for-serv00。…...
NOI Linux 2.0不只是竞赛工具:我用它搭建了一个轻量级C++/Python学习环境(含GUIDE、VS Code配置)
NOI Linux 2.0:从竞赛平台到全能编程学习环境的蜕变指南 当大多数人提起NOI Linux 2.0时,第一反应往往是"信息学奥赛专用系统"。但作为一个深度使用过各类Linux发行版的开发者,我发现这个官方定制系统其实是被严重低估的理想编程学…...
Book118文档下载器:3步免费获取完整PDF文档的终极指南
Book118文档下载器:3步免费获取完整PDF文档的终极指南 【免费下载链接】book118-downloader 基于java的book118文档下载器 项目地址: https://gitcode.com/gh_mirrors/bo/book118-downloader 你是否曾在Book118网站上找到急需的学习资料,却发现需…...
浏览器扩展开发实战:KeepChatGPT会话保持原理与实现
1. 项目概述:一个浏览器扩展的诞生与使命 最近在和一些做AI应用开发的朋友交流时,大家普遍反映了一个痛点:在使用一些大型语言模型(LLM)的在线服务时,对话经常会被意外中断。这种中断可能源于网络波动、服…...
第一份工作选大厂还是创业公司?5年后的差距令人深思
对于刚刚走出校门的软件测试工程师而言,第一份工作的选择,如同一场没有回头路的开局落子。它不仅仅关乎起薪的高低,更将深刻塑造你的技术视野、职业习惯和未来五年的成长曲线。五年,足以让一个初出茅庐的新人成长为独当一面的技术…...
Ubuntu 24.04 + ROS2 Jazzy 开发环境避坑指南
️ 环境配置(仅需操作一次) 前提背景:Ubuntu 24.04 强制要求使用虚拟环境安装 pip 第三方库,而 ROS2 编译工具链(colcon, catkin_pkg)依赖系统全局 Python。为兼顾两者,需创建一个“能看见系统 …...
如何准备打动评审的物联网与硬件创业技术演讲
1. 从听众到讲者:在EE Live分享你的硬件与物联网洞见如果你是一名电子设计工程师、嵌入式开发者,或者正在硬件创业的浪潮中摸索,那么EE Live这个名字对你来说应该不陌生。这个由EE Times主办的年度盛会,前身是DESIGN West…...
