前言:本篇用了我比较长时间,干货较多,甚至一篇顶三篇,希望各位耐心观看。Part 1:单调  单调是一种数据结构,一般分为单调递增单调递减单调一般用来解决寻找下一个大于或小于m值。  我们把得到答案放到K数组里。  一个经典例题:定义函数   在单调中,如果为空,那么K[i]就为0,如果不为空,则判断顶是否大于a[i],如果不是,那么弹出顶。最后,不管什么情
最近在学习数据结构和算法相关内容,非科班出身我,也只能慢慢地,一步一个脚印学习、理解基本概念,很多笔记内容来源于网上,文末也附上相应链接,自己根据网上博客内容以及自己理解写出以下内容。1. 什么是单调在此之前,我们应该知道,什么是,一种先进后出数据结构(存储数据一种方式),只从数据集一端进、出数据。而单调就是数据排列具有单调性,分为单调递增单调递减。需要注意
原创 2021-11-22 15:02:04
317阅读
单调简单讲解和几个题目. 维护一个,使得其存储数据具有单调性,这样叫做单调.单调递增:数据从顶到单调递增.单调递减:数据从顶到单调递减.单调何时用:为任意一个元素找左边和右边第一个比自己大/小位置用单调.用递增单调还是递减单调:递减会剔除波谷留下波峰;递增剔除波峰留下波谷.由于每个元素最多各自进出一次,复杂度
转载 2023-11-24 19:49:16
62阅读
单调是一种特殊,要求元素是单调递减或者单调递减。1、适用场景单调适合题目是求解下一个大于 xxx或者下一个小于 xxx这种题目。所有当你有这种需求时候,就应该想到单调。2、介绍比如我们需要依次将数组 [1,3,4,5,2,9,6] 压入单调。首先压入 1,此时为:[1]继续压入 3,此时为:[1,3]继续压入 4,此时为:[1,3,4]继续压入 5,此时为:
转载 2023-12-10 18:05:33
39阅读
ZZULI  XXX题意:给你一串序列,要你求所有子序列最小值之和。(n很大,无法暴力)思路:完美的单调模板这里简要介绍下单调性质,(其他都没用)单调维护是 O(n) 级时间复杂度,因为所有元素只会进入一次,并且出后再也不会进了。单调性质:1.单调元素具有单调性2.元素加入前,会在顶端把破坏栈单调元素都删除3.使用单调
原创 2021-09-05 12:36:03
152阅读
1. 单调简介1.1 前言今天是 2023/1/15,一中寒假集训阶段性结束了。集训学习笔记可以在本人 blogs 【算法】标签栏中找。马上就要过年了,提前祝大家新年快乐!1.2 什么是单调单调(monotone-stack)是一种基于进行算法,且内元素(底到顶)都是(严格)单调递增或者单调递减。定义很抽象,不如拿一道题来直观理解单调。1.3 算法流程1.3.1 [lu
转载 2023-09-18 14:11:22
192阅读
单调定义:内元素单调按照递增(递减)顺序排列基本作用:可以从数组中找到左右两边比x大(小)数,时间复杂度为O(n)单调基本操作:●为了维护单调性,在进过程中需要进行判断,具体进过程如下:假设当前进元素为e,●对于单调递减,从顶开始遍历元素,把小于e或者等于e元素弹出,直至遇见一个大于e元素或者为空为止,然后再把e压入中,这样就能满足从底到元素是递减
转载 2023-12-27 20:21:12
56阅读
1:单调概述首先先了解一下什么是单调(Monotonic stack),他有什么用途,我们在解决什么问题时候可以用到单调?我们都知道(stack)是很简单一种数据结构,先进后出逻辑顺序,符合某些问题特点,比如说函数调用单调顾名思义就是,只是利用了一些巧妙逻辑,使得每次新元素入后,元素都保持有序(单调递增或单调递减)。单调一般用来解决比当前元素更大或者更小下一
转载 2023-07-20 07:26:37
77阅读
#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;
原创 2024-08-22 14:00:37
26阅读
       初谈这个话题,相信许多人会有一种似有所悟,但又不敢确定感觉。没错,这正是因为其中“单调”一词存在,所谓单调是什么,学过函数people都知道单调函数或者函数单调性,直白一点说单调就是一直增或一直减。例如:1,3,5,9就是一个单调增数列,数列中不存在后一个数比前一个数小现象。那么同样,在这里谈到的话题也有类似特点。
转载 2023-07-20 07:26:05
135阅读
前言单调是一种基于结构,基本操作包括弹,但是需要维持数据是严格有序单调递增:从底到顶是从大到小单调递减:从底到顶是从小到大这就需要我们在基本操作基础上进行一些逻辑控制。这样一个数据结构在解决某些问题时会变得非常高效。单调介绍单调操作过程:当为空时,元素直接压不为空时,比较压入元素和顶元素,如果插入元素大于(或者小于)顶,那么就直接压入;
目录1.概述2.模板3.例题T1:T2:T3:T4:T5:4.总结1.概述单调,是一种数据结构,与单调队列相似。单调队列使用双端队列维护,队列内元素单调递增或单调递减。单调则使用普通维护,内元素单调递增或单调递减。接下来,通过一道例题,来看一下单调基本操作。2.模板link作为模板题,我将会详细讲解单调用法。单调其实类似于单调队列(不了解可以看一看这篇文章),只不过在维护时不
转载 2024-04-25 23:56:31
58阅读
目录单调(Monotone Stack)42. 接雨水84. 柱状图中最大矩形方法1:暴力法O(n^2)方法2:单调O(n)单调:不使用Stack,使用Deque方法3:暴力优化(本题最优解)单调(Monotone Stack)应用中有一类问题称为单调(Monotone Stack)问题,可以巧妙将某些问题时间复杂度降到「O(n)级别」。那么什么是单调呢?所谓单调,就是保持
转载 2023-11-28 13:02:44
65阅读
单调性优化:单调单调队列一、单调单调,就是要维护一个单调递增或递减。一般地,放入元素时,如果元素不符合单调递增(或递减),那就把它弹出,再查顶。直到符合或空了,再把元素放入。适用于快速求每个数两侧比它大(或小)位置。例题-柱状图中最大矩形算法·其实很简单 ·在这种方法中,我们维护一个。 ·一开始,我们把 -1 放进顶部来表示开始。 ·按照从左到右顺序,我们不断
转载 2023-12-18 12:26:39
72阅读
单调,英文 monotonic stack. 如果你常刷LeetCode的话,百题之内至少见2次单调。 本文尝试揭秘单调关键点。单调定义单调分为单调递增单调递减单调递增: 从顶往底看,是单调递增关系(含相等);单调递减: 从顶往底看,是单调递减关系(含相等);严格来说,含了“相等”,应该就不能说是“单调”了,但在这里应作宽泛理解,即这里单调”也包括“相
转载 2023-08-21 11:45:06
72阅读
题目描述 给定一个不含有重复值数组 arr,找到每一个 i 位置左边和右边离 i 位置最近且值比 arr[i] 小位置。返回所有位置相应信息。输入描述: 第一行输入一个数字 n,表示数组 arr 长度。以下一行输出 n个数字,表示数组值。 输出描述: 输出n行,每行两个数字 L 和 R,如果不存在,则值为-1,下标从0开始。 示例1 输入 复制 7 3 4 1 5 6 2 7 输出 复制
转载 2023-12-28 10:10:34
43阅读
【题目链接】​​点击打开链接​​【题意】 在一个队列中求一个最长子序列使得该子序列满足最大值与最小值差大于k小于m求该子序列最大长度【解题方法】 维护一个单调递增和一个单调递减,在满足条件时,维护答案最大值即可。【AC代码】////Created by just_sort 2016/1/6//Copyright (c) 2016 just_sort.All Rights Reserve
原创 2022-04-19 16:59:58
105阅读
文章和代码已经归档至【Github仓库:https://github.com/timerring/algorithms-notes 】或者公众号【AIShareLab】回复 算法笔记 也可获取。单调模板:先进后出。队列:先进先出。数组模拟和队列相较于STL好处在于速度快,虽然在实际编译时候会有O2优化,使两者相差无几,但是在算法题中一般没有优化。算法模板// 定义为stk[N],tt
原创 精选 2023-05-13 10:51:54
252阅读
(文章目录) 前言 本文介绍单调单调队列使用,并且提供模板。 一、单调地到顶是单调增加或者单调减少。 1.代码模板: //常见模型:找出每个数左边离它最近比它大/小数 //stk[0]是不存放元素,stk[tt]存放顶元素 int tt = 0; for (int i = ...
转载 2021-07-25 00:33:00
695阅读
2评论
  • 1
  • 2
  • 3
  • 4
  • 5