
滑动窗口
_amnesia_
这个作者很懒,什么都没留下…
展开
-
leetcode 1052. 爱生气的书店老板
题解 题目还是比较容易读懂的,根据题目写出代码即可,滑动窗口 首先求出全是0的那个部分解,然后在找到部分1中的最大值。 右指针+1,当窗口长度超过x,那么先取最大值,然后右指针加一,左指针加1然后减去之前左指针的数值,接着计算。 如果看不太懂的话可以边看代码边看题解,这样还是比较容易些的。 还有需要注意的是这个代码最后没有比较最后一次的maxn 和sum 的值所以仍需要最后比较一次。 代码 class Solution { public: int maxSatisfied(vector<int原创 2021-02-23 14:05:33 · 112 阅读 · 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 · 258 阅读 · 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 · 114 阅读 · 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 · 104 阅读 · 0 评论