LeetCode滑动窗口最大值
题目要求:
给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。
返回滑动窗口中的最大值。
示例 1:
输入:nums = [1,3,-1,-3,5,3,6,7], k = 3
输出:[3,3,5,5,6,7]
解释:
滑动窗口的位置 最大值
--------------- -----
[1 3 -1] -3 5 3 6 7 3
1 [3 -1 -3] 5 3 6 7 3
1 3 [-1 -3 5] 3 6 7 5
1 3 -1 [-3 5 3] 6 7 5
1 3 -1 -3 [5 3 6] 7 6
1 3 -1 -3 5 [3 6 7] 7
示例 2:
输入:nums = [1], k = 1
输出:[1]
示例 3:
输入:nums = [1,-1], k = 1
输出:[1,-1]
示例 4:
输入:nums = [9,11], k = 2
输出:[11]
示例 5:
输入:nums = [4,-2], k = 2
输出:[4]
解题思路:
创建数组存放最大值,用队列模拟窗口,遍历求最大值
代码展示:
class Solution {
public:vector<int> maxSlidingWindow(vector<int>& nums, int k) {vector<int> ans; const int N=1e5+10; int q[N]; int hh=0,tt=-1;int t=nums.size();for(int i=0;i<t;i++){if(hh<=tt && i-k+1>q[hh]) hh++; while(hh<=tt && nums[q[tt]]<=nums[i]) tt--;if(i-k+1>=0) ans.push_back(nums[q[hh]]);}return ans; }};
运行结果:
LeetCode滑动窗口最大值相关推荐
- 【LeetCode】【HOT】239. 滑动窗口最大值(双向队列)
[LeetCode][HOT]239. 滑动窗口最大值 文章目录 [LeetCode][HOT]239. 滑动窗口最大值 package hot;import java.util.Arrays; im ...
- 嗯,查询滑动窗口最大值的这4种方法不错....
作者 | 王磊 来源 | Java中文社群(ID:javacn666) 转载请联系授权(微信ID:GG_Stone) 本文已收录至 Github<小白学算法>系列:https://gith ...
- 你还在为查询滑动窗口最大值发愁吗?点开看最高效率解法!
作者 | 王磊 来源 | Java中文社群(ID:javacn666) 头图 | CSDN 下载自东方IC 本文已收录至 Github<小白学算法>系列:https://github.c ...
- leetcode 滑动窗口1
leetcode 滑动窗口1 leetcode159. 至多包含两个不同字符的最长子串 1. 题目 2. 解答 leetcode1151. 最少交换次数来组合所有的1 1. 题目 2. 解答 leet ...
- (补)算法训练Day13 | LeetCode150. 逆波兰表达式求值(栈应用);LeetCode239. 滑动窗口最大值(单调队列);LeetCode347. 前K个高频元素(小顶堆,优先级队列)
目录 LeetCode150. 逆波兰表达式求值 1. 思路 2. 代码实现 3. 复杂度分析 4. 思考 LeetCode239. 滑动窗口最大值 1. 思路 2. 代码实现 3. 复杂度分析 4. ...
- 数据结构算法——滑动窗口问题(以LeetCode滑动窗口题为例)
1. 滑动窗口 滑动窗口算法是在给定特定窗口大小的数组或字符串上执行要求的操作,它的原理与网络传输TCP协议中的滑动窗口协议(Sliding Window Protocol)基本一致. 这种技术可以将 ...
- 滑动窗口最大值的golang实现
给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧.你只可以看到在滑动窗口 k 内的数字.滑动窗口每次只向右移动一位. 返回滑动窗口最大值 输入: nums = [1 ...
- Suzy找到实习了吗Day 13 | 栈和队列结束啦 239. 滑动窗口最大值,347. 前 K 个高频元素
day 13 239. 滑动窗口最大值 Python的Deque模块详解 solution 我复制的,好难不会写 347. 前 K 个高频元素(一刷我没有用栈,用的哈希法) solution(hash ...
- 单调区间之239.滑动窗口最大值
单调区间 239. 滑动窗口最大值 这个题如果用普通的优先队列是有问题的,因为每次弹出去的不知道是上一个窗口的左边界还是这个窗口里的元素.我们要的是每次只弹出上一个窗口的左边界并且还能弹出最值,所以这 ...
最新文章
- 2022-2028年中国企业核心路由交换机行业市场前瞻与投资分析报告
- 10玩rust_有趣的 Rust 类型系统: Trait
- 我很欣慰,Vista下终于能用rose了
- HTMLCollection元素的For循环
- java 生成 防伪码,C#生成防伪码的思路及源码分享
- java 时间工具类 大于_Java 时间工具类
- NLPPython笔记——WordNet
- 微软服务器延迟,经过六个多月的延迟,微软终于推出Hyper-V Server 2019
- 初级算法——删除排序数组中的重复项
- mac地址是由多少个bit组成_IPv6系列-详解自动分配IPv6地址
- JavaFX之3 动画与事件处理
- HDU 3732 Ahui Writes Word
- pg数据库多表查询(inner)和级联查询
- java类注释_Java注释,java类注释详解
- typroa 思维导图_Markdown转思维导图及Typora导出opml(pandoc)
- APICloud的config.xml应用配置的说明
- 给宝贝女儿雅琪写的顺口溜
- vue3 + js-cookie加密解密(普通版本/TS版本)
- 云锁和安全狗哪个好 Bypass阿里云盾、百度云加速、安全宝、安全狗、云锁、360主机卫士SQL注入防御-系统/上网/安全
- zblog php建站教程_Z-BlogPHP主题制作教程