First In First Out 通常可以用来保存状态。 操作:入栈,出栈,获取顶部元素 典型题目: 1. 有效的括号 如果栈里没有匹配的括号,则将此括号入栈; 如果栈里有匹配的括号,则将匹配的括号出栈。 匹配的过程用查表法(哈希)。 2. 最小栈 需要用到一个辅助栈MinStack记录min, ...
转载
2021-08-28 14:45:00
51阅读
2评论
算法,向来是个老大难问题,对于程序员的重要性来说不言而喻。而且越来越多的面试,都加入了算法题。能否找到心仪满意的工作,算法可能是拉开差距的择优点。虽然工作中可能用到的场景比较少,但是它实际有效的训练了我们的逻辑思维能力。提高了对程序性能,代码性能,和执行率。所以,平时有一定的算法思维,对于本身还是有益的。
这里将成为个人记录算法的地方,希望有更多有兴趣的人,讨论研究,共同进步。
来个抛砖引玉吧!
原创
2021-07-07 15:49:29
107阅读
单调栈定义:栈内元素单调按照递增(递减)顺序排列的栈基本作用:可以从数组中找到左右两边比x大(小)的数,时间复杂度为O(n)单调栈的基本操作:●为了维护栈的单调性,在进栈过程中需要进行判断,具体进栈过程如下:假设当前进栈元素为e,●对于单调递减栈,从栈顶开始遍历元素,把小于e或者等于e的元素弹出栈,直至遇见一个大于e的元素或者栈为空为止,然后再把e压入栈中,这样就能满足从栈底到栈顶的元素是递减的。
/*============================================================================Name : 工程4.cAuthor : arkorVersion :Copyright : Your copyright noticeDescription : Hello World in C, Ansi-style============
原创
2011-01-06 12:18:59
479阅读
点赞
算法—单调栈小结 前言 在leetcode刷题的时候遇到了503. 下一个更大元素 II。一开始是使用暴力解法,会因为$O(n^2)$的时间复杂度而导致超时。看了题解之后了解了单调栈相关的知识,运用单调栈的方法可以在$O(n)$时间内解决这个问题。 单调栈 单调栈是在栈的FILO(先进后出)的特性在 ...
转载
2021-10-13 19:22:00
78阅读
2评论
单调栈模板:单调栈模板:
for (遍历这个数组)
while (栈不为空 && 栈顶元素<或者>当前元素)
栈顶元素出栈
更新结果
当前数据入栈
例如单调递增的stack,python实现就是:
stack = []
for i in range(0, len(arr)):
while stack and stack[-1]
原创
2023-07-28 22:08:22
78阅读
1 典型的单调栈问题,利用单调递减栈进行解决,从前和从后遍历都可以解决问题,从后遍历时,确定的是入栈元素的答案,从前遍历时,确定的是出栈元素的答案,739. 每日温度2 利用单调递减栈解决,关键是出栈时计算每个位置当前可以盛水的量,所以每次出栈后要保证栈不空,才可以计算盛水量,否则结束,42. 接雨水3 用单调递减栈从前往后遍历,多了一个用哈希表来记录映射,496. 下一个更大元素 I4 单调递增
738. 单调递增的数字
原创
2023-03-21 09:07:51
62阅读
详细分析栈的特点及应用场景,并实例讲解
原创
2021-12-09 14:38:43
54阅读
算法-栈队列堆简介:算法篇-栈队列堆 不敢高声语,恐惊天上人。一、用两个栈实现队列1、题目描述用两个栈来实现一个队列,完成队列的 Push 和 Pop 操作。2、解题思路in 栈用来处理入栈(push)操作,out 栈用来处理出栈(pop)操作。一个元素进入 in 栈之后,出栈的顺序被反转。当元素要出栈时,需要先进入 out 栈,此时元素出栈顺序再一次被反转,因此出栈顺序就和最开始入栈顺
原创
2021-12-21 14:01:54
273阅读
我们都知道栈和队列是两种很相似的数据结构,但是又有他们的特点栈是一种先进后出的数据结构,FILO(先进后出)队列是一种先
原创
2022-07-29 10:53:18
73阅读
题目: 找出一组数中 右边第一个比他大的数 和 左边第一个比他大的数 维护一个栈底到栈顶 从大到小的栈,当压入的数大于栈顶的数 统计栈顶数的左边最大与右边最大 当没有压入值的时候 依次弹出 求出左边最大的值 栈里 底下的数是大于当前数的 上面的数是小于当前数的 求最近的大于当前值的数是 栈顶到栈底 ...
转载
2021-07-26 17:50:00
121阅读
2评论
1、描述设计一个支持push、pop、top操作,并且能在常数时间内检索到最小元素的栈。 push(x) --- 将元素 x 推入栈中 pop() --- 删除栈顶的元素 top() --- 获取栈顶的元素 getMin() --- 检索栈中的最小元素例1:var minStack = MinStack....
原创
2021-09-02 09:30:08
193阅读
单调栈的应用在刚接触单调栈的时候,我们在做了几道入门题后可能会对单调栈有一定的了解,但是却有点难以归纳说出单调栈到底适用于什么题目、能解决什么样的问题(或者在遇到什么类型的题目时我们要想到用单调栈),我刚开始也百思不得其解,但在后面将几道相关题目一一对比之后,我忽然对单调栈的应用有了更深的理解。1.单调栈的特点:1.后进先出1.单调性:单调栈中存储的所有元素一定是单调增或减的。2.单调栈的作用归纳
栈的定义:栈(stack)是一种用于存储数据的简单数据结构。栈一个有序线性表,只能在表的一端(PS:栈顶)执行插人和删除操作。最后插人的元素将被第一个删除。所以,栈也称为后进先出(Last In First Out,LIFO)或先进后出(First In Last Out,FILO)线性表。 Java 集合框架中的 Stack 继承自 Vector:由于 Vector 有 4
摘要栈相关算法练习一、算法练习题目94. 二叉树的中序遍历package 栈算法;
import java.util.*;
public class inorderTraversal94 {
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
原创
2023-04-04 12:50:16
60阅读
栈提到方法的递归调用,需要先说一下栈的存储概念。 栈是一个先进后出的压入(push)和弹出(pop)式数据存储结构。若想获取到栈底的对象,就必须先将这个对象上面的所有的对象全部从栈中移除,否则无法获取栈底的对象。 我们来看看程序中栈是如何工作的,当一个方法(调用者)调用另一个方法(被调用者)时,将会将调用者的参数和返回值一起压入到栈中,此时调用者方法处于栈顶的位置,当调用者执行到调用方法的语
package com.tw.dst.sq; /** * * <p>栈算法:栈是一种后进先出的方式</p> * @author tangw 2010-11-26 */
原创
2010-11-27 15:17:52
536阅读
点赞
4评论
10.16 ①有效的括号 给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 示例 1: 输入:s = "()" 输出:true 示例 2: 输入:s = "()[ ...
转载
2021-10-16 12:21:00
38阅读
2评论
原创
2022-01-04 16:36:43
395阅读