【题目】: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') { // 滑窗内有字符W curWcount++; } if(r - l + 1 == k) { res = min(res, curWcount); // 缩小窗口 if(blocks[l++] == 'W') { curWcount--; } } } return res; }}; 时间复杂度: O(n) 空间复杂度: O(1) 题目想要求把白色块变成黑色块使得有k个连续的黑色块的最小次数,也就是求滑窗内白色块出现的最小次数。只要统计长度为k的滑窗内最少的白色字符数即可。