![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
滑动窗口
_amnesia_
这个作者很懒,什么都没留下…
展开
-
leetcode 1052. 爱生气的书店老板
题解题目还是比较容易读懂的,根据题目写出代码即可,滑动窗口首先求出全是0的那个部分解,然后在找到部分1中的最大值。右指针+1,当窗口长度超过x,那么先取最大值,然后右指针加一,左指针加1然后减去之前左指针的数值,接着计算。如果看不太懂的话可以边看代码边看题解,这样还是比较容易些的。还有需要注意的是这个代码最后没有比较最后一次的maxn 和sum 的值所以仍需要最后比较一次。代码class Solution {public: int maxSatisfied(vector<int原创 2021-02-23 14:05:33 · 82 阅读 · 0 评论 -
leetcode 1004. 最大连续1的个数 III
题解还是滑动窗口跟之前做的题目其实是有些类似的,需要进行题目转换,转化为寻找包含k个0的最大连续子串。然后题目就变得简单了左右两个指针,右指针一直向右走,当不满足<= k个0的条件,那么需要左指针右移,并且判断当前存在的0的个数。代码class Solution {public: int longestOnes(vector<int>& A, int K) { int n = A.size(); int left = 0,res原创 2021-02-19 10:55:16 · 200 阅读 · 0 评论 -
leetcode 992. K 个不同整数的子数组
题解滑动窗口动态规划 恰好K个组成为 最多K个组成 - 最多K - 1个组成如何计算最多K个组成:当从1个增加为2个,增加的数目为新的子数组的长度。代码class Solution {public: int GetMostDistinct(vector<int>& A, int K) { unordered_map<int,int>mp; int left = 0,right = 0,ret = 0; whi原创 2021-02-09 10:50:04 · 62 阅读 · 0 评论 -
leetcode 1423. 可获得的最大点数
题解滑动窗口,转换思维,就是找 n - k 个连续的最小值,即找到k个最大值。注意时间复杂度,accumulate时间为O(n),内层循环不可以使用。代码class Solution {public: int maxScore(vector<int>& cardPoints, int k) { int n = cardPoints.size(); int windowSize = n - k; int minsum = a原创 2021-02-06 15:42:52 · 57 阅读 · 0 评论