当前位置:网站首页>155. 最小栈
155. 最小栈
2022-07-05 12:39:00 【厚积薄发ض】
设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。
实现 MinStack 类:
- MinStack() 初始化堆栈对象。
- void push(int val) 将元素val推入堆栈。
- void pop() 删除堆栈顶部的元素。
- int top() 获取堆栈顶部的元素。
- int getMin() 获取堆栈中的最小元素。
输入:
["MinStack","push","push","push","getMin","pop","top","getMin"]
[[],[-2],[0],[-3],[],[],[],[]]输出:
[null,null,null,null,-3,null,0,-2]解释:
MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.getMin(); --> 返回 -3.
minStack.pop();
minStack.top(); --> 返回 0.
minStack.getMin(); --> 返回 -2.
题意:这个题题意就是得到栈中最小的数字,不管你是入栈还是出栈之后最终得到栈中的最小数字。
思路:准备两个栈,一个栈是正常的栈,一个栈是保存栈中最小数字的的栈,我们也叫他最小栈,当两个栈刚开始为空时,我们就将元素同时入到这两个栈中,如果不为空,将元素入到第一个普通栈中,然后用这个元素与最小栈栈顶元素比较,如果大于最小栈栈顶元素就不入最小栈,如果小于最小栈栈顶元素就入最小栈。
class MinStack {
Stack<Integer> stack;
Stack<Integer> minStack;
public MinStack() {//初始化两个栈
stack = new Stack<>();//普通栈
minStack = new Stack<>();//最小栈
}
public void push(int val) {
if(stack.empty()&&minStack.empty()){
//两个栈都为空,同时push元素
stack.push(val);
minStack.push(val);
}else {
stack.push(val);
if(val<=minStack.peek()){//比最小栈栈顶元素小就入
minStack.push(val);
}
}
}
public void pop() {//出栈,如果出的是与最小栈栈顶元素相同,那么也同时出最小栈栈顶元素,保持最小栈栈顶依然是栈中最小的元素
int x = stack.pop();
if(x==minStack.peek()){
minStack.pop();
}
}
public int top() {//弹出普通栈栈顶元素
return stack.peek();
}
public int getMin() {//最小栈栈顶元素就是最小值
return minStack.peek();
}
}
边栏推荐
- Add a new cloud disk to Huawei virtual machine
- Wechat enterprise payment to change access, open quickly
- stm32和电机开发(从架构图到文档编写)
- Resnet18 actual battle Baoke dream spirit
- Taobao, pinduoduo, jd.com, Doudian order & Flag insertion remarks API solution
- UNIX socket advanced learning diary -ipv4-ipv6 interoperability
- 2021.12.16-2021.12.20 empty four hand transaction records
- Distributed cache architecture - cache avalanche & penetration & hit rate
- View and modify the MySQL data storage directory under centos7
- Rasa Chat Robot Tutorial (translation) (1)
猜你喜欢
About LDA model
[cloud native] event publishing and subscription in Nacos -- observer mode
SAP SEGW 事物码里的 Association 建模方式
Storage Basics
自然语言处理系列(一)入门概述
Kotlin variable
What is the difference between Bi software in the domestic market
ActiveMQ installation and deployment simple configuration (personal test)
Comprehensive upgrade of Taobao short video photosynthetic platform
Tips and tricks of image segmentation summarized from 39 Kabul competitions
随机推荐
Kotlin变量
CVPR 2022 | 基于稀疏 Transformer 的单步三维目标识别器
太方便了,钉钉上就可完成代码发布审批啦!
10 minute fitness method reading notes (3/5)
NFT: how to make money with unique assets?
[cloud native] use of Nacos taskmanager task management
DNS的原理介绍
Notes for preparation of information system project manager --- information knowledge
谈谈我写作生涯的画图技巧
From the perspective of technology and risk control, it is analyzed that wechat Alipay restricts the remote collection of personal collection code
About LDA model
Alipay transfer system background or API interface to avoid pitfalls
UNIX socket advanced learning diary -ipv4-ipv6 interoperability
mysql拆分字符串做条件查询
Time conversion error
Neural network of PRML reading notes (1)
JDBC exercise - query data encapsulated into object return & simple login demo
Introduction to relational model theory
Distributed solution - completely solve website cross domain requests
开发者,云原生数据库是未来吗?