LeetCode 2379. 得到 K 个黑块的最少涂色次数缩略图

给你一个长度为 n 下标从 0 开始的字符串 blocks ,blocks[i] 要么是 'W' 要么是 'B' ,表示第 i 块的颜色。字符 'W' 和 'B' 分别表示白色和黑色。

给你一个整数 k ,表示想要 连续 黑色块的数目。

每一次操作中,你可以选择一个白色块将它 涂成 黑色块。

请你返回至少出现 一次 连续 k 个黑色块的 最少 操作次数。

2379. 得到 K 个黑块的最少涂色次数 – 力扣(Leetcode)

LeetCode 2379. 得到 K 个黑块的最少涂色次数插图
OpenCV步步精深-可心科创工作室

思路:

固定长度的滑动窗口。

知识点:

滑动窗口算法-固定窗口:窗口的长度固定了,用指针进行滑动,指针指向窗口头,加上长度就是窗口尾。对字符串进行切片就可以逐步遍历所有字符了。

python3实现:

class Solution:
    def minimumRecolors(self, blocks: str, k: int) -> int:
        # 滑动窗口,窗口大小是k
        len_blocks = len(blocks)
        p = 0
        result = []
        while p+k <= len_blocks:
            str_part = blocks[p:p+k]
            count = str_part.count("W")
            result.append(count)
            p += 1
        return min(result)
LeetCode 2379. 得到 K 个黑块的最少涂色次数插图1
OpenCV步步精深-可心科创工作室

更多干货见 OpenCV步步精深

作者 admin

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注