单调队列
ln2037
用心雕琢我的艺术品。
展开
-
LeetCodde 239. 滑动窗口最大值 【单调队列】
给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。进阶:你能在线性时间复杂度内解决此题吗?示例:输入: 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 31 [3 -1 -3] 5原创 2020-12-19 19:33:33 · 90 阅读 · 1 评论 -
LeetCode862. 和至少为 K 的最短子数组【单调队列 + 前缀和】
返回 A 的最短的非空连续子数组的长度,该子数组的和至少为 K 。如果没有和至少为 K 的非空子数组,返回 -1 。示例 1:输入:A = [1], K = 1输出:1示例 2:输入:A = [1,2], K = 4输出:-1示例 3:输入:A = [2,-1,2], K = 3输出:3提示:1 <= A.length <= 50000-10 ^ 5 <= A[i] <= 10 ^ 51 <= K <= 10 ^ 9维护一个前缀和数组sum原创 2020-12-13 18:17:31 · 147 阅读 · 0 评论 -
P1419 寻找段落 【二分 + 单调队列 + 前缀和】
题目描述给定一个长度为n的序列a_i,定义a[i]为第i个元素的价值。现在需要找出序列中最有价值的“段落”。段落的定义是长度在[S,T]之间的连续序列。最有价值段落是指平均值最大的段落,段落的平均值=段落总价值/段落长度。输入格式第一行一个整数n,表示序列长度。第二行两个整数S和T,表示段落长度的范围,在[S,T]之间。第三行到第n+2行,每行一个整数表示每个元素的价值指数。输出格式一个实数,保留3位小数,表示最优段落的平均值。输入输出样例输入 #132 23-12输出 #1原创 2020-09-11 20:57:55 · 241 阅读 · 0 评论 -
P1886 滑动窗口 【单调队列】
题目描述有一个长为 nnn 的序列 aaa,以及一个大小为 kkk 的窗口。现在这个从左边开始向右滑动,每次滑动一个单位,求出每次滑动后窗口中的最大值和最小值。例如:The array is [1,3,−1,−3,5,3,6,7][1,3,-1,-3,5,3,6,7][1,3,−1,−3,5,3,6,7], and k=3k = 3k=3。输入格式输入一共有两行,第一行有两个正整数 n,kn,kn,k。 第二行 nnn 个整数,表示序列 aaa输出格式输出共两行,第一行为每次窗口滑动的最小值原创 2020-09-09 15:37:42 · 229 阅读 · 0 评论 -
P2032 扫描 【单调队列】
题目描述有一个 1×n1 \times n1×n 的矩阵,有 nnn 个整数。现在给你一个可以盖住连续 kkk 个数的木板。一开始木板盖住了矩阵的第 1∼k1 \sim k1∼k 个数,每次将木板向右移动一个单位,直到右端与第 nnn 个数重合。每次移动前输出被覆盖住的数字中最大的数是多少。输入格式第一行两个整数 n,kn,kn,k,表示共有 nnn 个数,木板可以盖住 kkk 个数。第二行 nnn 个整数,表示矩阵中的元素。输出格式共 n−k+1n - k + 1n−k+1 行,每行一个原创 2020-09-09 14:07:08 · 220 阅读 · 0 评论 -
P1440 求m区间内的最小值 【单调队列】
题目描述一个含有 nnn 项的数列,求出每一项前的 mmm 个数到它这个区间内的最小值。若前面的数不足 mmm 项则从第 111 个数开始,若前面没有数则输出 000。输入格式第一行两个整数,分别表示 nnn,mmm。第二行,nnn 个正整数,为所给定的数列 aia_iai。输出格式nnn 行,每行一个整数,第 iii 个数为序列中 aia_iai 之前 mmm 个数的最小值。输入输出样例输入 #16 27 8 1 4 3 2输出 #1077113说明/提示对于 1原创 2020-09-09 15:18:08 · 215 阅读 · 0 评论