滑动窗口
# 滑动窗口
lucky tiger
要一直前进,一直静下心来学习。
展开
-
力扣 220 存在重复元素III (滑动窗口)
220. 存在重复元素 III给你一个整数数组 nums 和两个整数k 和 t 。请你判断是否存在 两个不同下标 i 和 j,使得abs(nums[i] - nums[j]) <= t ,同时又满足 abs(i - j) <= k 。如果存在则返回 true,不存在返回 false。示例1:输入:nums = [1,2,3,1], k = 3, t = 0输出:true示例 2:输入:nums = [1,0,1,1], k = 1, t = 2输出:t...原创 2021-04-17 10:26:03 · 131 阅读 · 0 评论 -
力扣1052.爱生气的书店老板 滑动窗口
1、直接暴力做的话超时了,而且还要注意很多边界条件,理不太清。。class Solution {public: int maxSatisfied(vector<int>& customers, vector<int>& grumpy, int X) { int n = customers.size(); int res = INT_MIN; int ans = 0; int idx原创 2021-02-23 15:08:18 · 125 阅读 · 0 评论 -
力扣995.K连续位的最小翻转次数 —— 滑动平均
1、暴力超时,从左到右一个一个看class Solution {public: int minKBitFlips(vector<int>& A, int K) { int n = A.size(); int ans = 0; for(int i = 0; i < n; i++)//直接暴力从左到右遍历 { if(A[i] != 1 && i < n) ..原创 2021-02-19 21:03:02 · 150 阅读 · 0 评论 -
力扣239 滑动窗口最大值 「双端队列」
1、用双端队列来做:队列的头在左侧 尾在右侧也就是说最大的值在右边nums[dq.front()]<i-k+1这句是去掉上一个窗口的多于元素<记住规律>if(i>=k-1)是最后记录最大值的时候保证最开始的两个不被计算进来2、class Solution {public: vector<int> maxSlidingWindow(vector<int>& nums, int k) { ...原创 2020-07-02 09:17:35 · 210 阅读 · 0 评论 -
力扣718 最长重复子数组 滑动窗口
1、B固定 A往左移动A固定 B往左移动class Solution {public: int maxLength(vector<int>& A, vector<int>& B, int addA, int addB, int len) { int ret = 0, k = 0; for (int i = 0; i < len; i++) { if (A[addA + i] ==原创 2020-07-01 20:23:02 · 198 阅读 · 0 评论