【题目】:2379. 得到 K 个黑块的最少涂色次数
class Solution {
public:int minimumRecolors(string blocks, int k) {int res = blocks.size();int curWcount = 0; // 记录窗口内W字符的个数for(int l = 0, r = 0; r < blocks.size(); ++r) {if(blocks[r] == 'W') { // 滑窗内有字符WcurWcount++;}if(r - l + 1 == k) {res = min(res, curWcount);// 缩小窗口if(blocks[l++] == 'W') {curWcount--;}}}return res;}
};
- 时间复杂度: O(n)
- 空间复杂度: O(1)
题目想要求把白色块变成黑色块使得有k个连续的黑色块的最小次数,也就是求滑窗内白色块出现的最小次数。只要统计长度为k的滑窗内最少的白色字符数即可。