前言:本篇用了我比较长时间,干货较多,甚至一篇顶三篇,希望各位耐心观看。Part 1:单调  单调是一种数据结构,一般分为单调递增单调递减单调一般用来解决寻找下一个大于或小于m值。  我们把得到答案放到K数组里。  一个经典例题:定义函数   在单调中,如果为空,那么K[i]就为0,如果不为空,则判断顶是否大于a[i],如果不是,那么弹出顶。最后,不管什么情
原创 2021-11-22 15:02:04
284阅读
目录单调(Monotone Stack)42. 接雨水84. 柱状图中最大矩形方法1:暴力法O(n^2)方法2:单调O(n)单调:不使用Stack,使用Deque方法3:暴力优化(本题最优解)单调(Monotone Stack)应用中有一类问题称为单调(Monotone Stack)问题,可以巧妙将某些问题时间复杂度降到「O(n)级别」。那么什么是单调呢?所谓单调,就是保持
单调,英文 monotonic stack. 如果你常刷LeetCode的话,百题之内至少见2次单调。 本文尝试揭秘单调关键点。单调定义单调分为单调递增单调递减单调递增: 从顶往底看,是单调递增关系(含相等);单调递减: 从顶往底看,是单调递减关系(含相等);严格来说,含了“相等”,应该就不能说是“单调”了,但在这里应作宽泛理解,即这里单调”也包括“相
转载 2023-08-21 11:45:06
62阅读
单调性优化:单调单调队列一、单调单调,就是要维护一个单调递增或递减。一般地,放入元素时,如果元素不符合单调递增(或递减),那就把它弹出,再查顶。直到符合或空了,再把元素放入。适用于快速求每个数两侧比它大(或小)位置。例题-柱状图中最大矩形算法·其实很简单 ·在这种方法中,我们维护一个。 ·一开始,我们把 -1 放进顶部来表示开始。 ·按照从左到右顺序,我们不断
什么叫单调呢?就是单调递增或是单调递减。 适用于什么样题呢?柱状图中最大矩形柱状图中最大矩形: 给定 n 个非负整数,用来表示柱状图中各个柱子高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来矩形最大面积。 以上是柱状图示例,其中每个柱子宽度为 1,给定高度为 [2,1,5,6,2,3]。输入: [2,1,5,6,2,3]输出: 10一般式:输入是数组且
ZZULI  XXX题意:给你一串序列,要你求所有子序列最小值之和。(n很大,无法暴力)思路:完美的单调模板这里简要介绍下单调性质,(其他都没用)单调维护是 O(n) 级时间复杂度,因为所有元素只会进入一次,并且出后再也不会进了。单调性质:1.单调元素具有单调性2.元素加入前,会在顶端把破坏栈单调元素都删除3.使用单调
原创 2021-09-05 12:36:03
142阅读
单调简单讲解和几个题目. 维护一个,使得其存储数据具有单调性,这样叫做单调.单调递增:数据从顶到单调递增.单调递减:数据从顶到单调递减.单调何时用:为任意一个元素找左边和右边第一个比自己大/小位置用单调.用递增单调还是递减单调:递减会剔除波谷留下波峰;递增剔除波峰留下波谷.由于每个元素最多各自进出一次,复杂度
#include<iostream>using namespace std;const int N=10010;int n;int stk[N],tt;int main(){ cin>>n; for(int i=0;i<n;i++){ int x;
单调是一种特殊,要求元素是单调递减或者单调递减。1、适用场景单调适合题目是求解下一个大于 xxx或者下一个小于 xxx这种题目。所有当你有这种需求时候,就应该想到单调。2、介绍比如我们需要依次将数组 [1,3,4,5,2,9,6] 压入单调。首先压入 1,此时为:[1]继续压入 3,此时为:[1,3]继续压入 4,此时为:[1,3,4]继续压入 5,此时为:
转载 10月前
28阅读
【题目链接】​​点击打开链接​​【题意】 在一个队列中求一个最长子序列使得该子序列满足最大值与最小值差大于k小于m求该子序列最大长度【解题方法】 维护一个单调递增和一个单调递减,在满足条件时,维护答案最大值即可。【AC代码】////Created by just_sort 2016/1/6//Copyright (c) 2016 just_sort.All Rights Reserve
原创 2022-04-19 16:59:58
96阅读
文章和代码已经归档至【Github仓库:https://github.com/timerring/algorithms-notes 】或者公众号【AIShareLab】回复 算法笔记 也可获取。单调模板:先进后出。队列:先进先出。数组模拟和队列相较于STL好处在于速度快,虽然在实际编译时候会有O2优化,使两者相差无几,但是在算法题中一般没有优化。算法模板// 定义为stk[N],tt
原创 精选 2023-05-13 10:51:54
235阅读
(文章目录) 前言 本文介绍单调单调队列使用,并且提供模板。 一、单调地到顶是单调增加或者单调减少。 1.代码模板: //常见模型:找出每个数左边离它最近比它大/小数 //stk[0]是不存放元素,stk[tt]存放顶元素 int tt = 0; for (int i = ...
转载 2021-07-25 00:33:00
673阅读
2评论
1 典型单调问题,利用单调递减进行解决,从前和从后遍历都可以解决问题,从后遍历时,确定是入元素答案,从前遍历时,确定是出元素答案,739. 每日温度2 利用单调递减解决,关键是出时计算每个位置当前可以盛水量,所以每次出后要保证不空,才可以计算盛水量,否则结束,42. 接雨水3 用单调递减从前往后遍历,多了一个用哈希表来记录映射,496. 下一个更大元素 I4 单调递增
低到顶元素依次减小单调低到顶元素依次增大单调 应用
原创 2021-07-07 16:21:11
156阅读
当遇到问题相当于,求解 prev smaller element :初始数组从后往前,维护一个单调递增 next smaller element: 初始数组从前往后,维护一个单调递增 ...
转载 2021-10-13 15:53:00
85阅读
2评论
单调单调队列很相似。首先是后进先出单调性指的是严格递增或者递减。 单调有以下两个性质: 1、若是单调递增,则从顶到元素是严格递增。若是单调递减,则从顶到元素是严格递减。 2、越靠近元素越后进单调单调队列不同地方在于只能在顶操作,因此一般在应用单调地方不限定它大小,否则会造成元素无法进。 元素进过程:对于单调递增,若当前进
转载 2022-08-04 09:37:20
49阅读
题目 给定一个长度为 $N$ 整数数列,输出每个数左边第一个比它小数,如果不存在则输出 $−1$。 输入格式 第一行包含整数 $N$,表示数列长度。 第二行包含 $N$ 个整数,表示整数数列。 输出格式 共一行,包含 $N$ 个整数,其中第 $i$ 个数表示第 $i$ 个数左边第一个比它小数,如果不存在则输出 $−1$。 数据范围 $1≤N≤10^5$ $1≤数列中元素≤10^9$ 输入
原创 2023-07-15 09:43:41
70阅读
单调
原创 2023-07-01 10:59:01
57阅读
单调 参考: 单调 - Shuyu Fang - CSDN博客http://blog.csdn.net/alongela/article/details/8227707 单调介绍以及一些基本性质 - 多反思,多回顾,要坚持。 - CSDN博客http://blog.csdn.net/liuj
转载 2017-08-28 19:12:00
301阅读
2评论
  • 1
  • 2
  • 3
  • 4
  • 5