lc 2379 得到k个黑色快的最少operate
说实话,滑动窗口还是见少了,知道有这个东西,一直没总结,刚看到题,自己还是很懵逼的,以为是dp,但是是简单题,都说用滑动窗口做,才有思路
大概思路如下图,滑动窗口每次都是双指针,来固定大小,当left++时right也++,使得窗口大小保持固定
直到right移动到数组最大长度位
代码
class Solution {
public:
int minimumRecolors(string blocks, int k) {
//滑动窗口找窗口白色数目最少
int left = 0, right = k - 1;
int op = 0;
for (int i = 0; i < k; i++) {
if (blocks[i] == 'W') {
op++;
}
}
int ans = op;
left += 1;
right += 1;
for (int i = left; i < blocks.size() - k + 1; i++, right++) {
if (blocks[i - 1] == 'W') op--;//看左边减少的数目
if (blocks[right] == 'W') op++;//看移动时右边增加的数目
ans = min(ans, op);
}
return ans;
}
};
标签:right,窗口,int,blocks,++,滑动,op,指针
From: https://www.cnblogs.com/tsqo/p/17197077.html