2209. 用地毯覆盖后的最少白色砖块
题目地址(2209. 用地毯覆盖后的最少白色砖块)
https://leetcode-cn.com/problems/minimum-white-tiles-after-covering-with-carpets/
题目描述
前置知识
动态规划
公司
暂无
思路
定义 dp[i][j] 为仅考虑前 i 个砖块,使用 j 块毯子 的最少漏出白色砖块数目。
那么答案自然就是 dp[-1][-1]
我们考虑如何转移,和大多数转移方程一样,实际上就是一个选择问题。
如果选择盖住 floor[i] (不妨毯子尾部盖住 floor[i]),那么 dp[i][j] = dp[i - carpetLen][j - 1]
如果选择不盖住 floor[i],那么 dp[i][j] = dp[i - 1][j] + int(floor[i] == '1')。 其中 int(floor[i] == '1') 表示如果 floor[i] 是黑的,那么漏出白色不受影响(+0) ,否则漏出白色多一块(+1)。
最后考虑 base case。
当 j == 0(没有毯子可用),我们如何考虑?此时:
那么当 i == 0 ,需要特殊考虑么?在这里是不需要的。
关键点
代码
语言支持:Python3
Python3 Code:
复杂度分析
令 n 为 floor 长度。
时间复杂度:$O(n * numCarpets)$
空间复杂度:$O(n * numCarpets)$
此题解由 力扣刷题插件 自动生成。
力扣的小伙伴可以关注我,这样就会第一时 间收到我的动态啦~
以上就是本文的全部内容了。大家对此有何看法,欢迎给我留言,我有时间都会一一查看回 答。更多算法套路可以访问我的 LeetCode 题解仓库 :https://github.com/azl397985856/leetcode 。 目前已经 40K star 啦。大家也可以关 注我的公众号《力扣加加》带你啃下算法这块硬骨头。
关注公众号力扣加加,努力用清晰直白的语言还原解题思路,并且有大量图解,手把手教你 识别套路,高效刷题。
最后更新于