当前位置:网站首页>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();
}
}
边栏推荐
- GNN(pytorch-geometric)
- 非技术部门,如何参与 DevOps?
- 谈谈我写作生涯的画图技巧
- Time conversion error
- stirring! 2022 open atom global open source summit registration is hot!
- Volatile instruction rearrangement and why instruction rearrangement is prohibited
- Simply take stock reading notes (4/8)
- C alarm design
- How do e-commerce sellers refund in batches?
- DNS的原理介绍
猜你喜欢
Install rhel8.2 virtual machine
开发者,云原生数据库是未来吗?
What if wechat is mistakenly sealed? Explain the underlying logic of wechat seal in detail
上午面了个腾讯拿 38K 出来的,让我见识到了基础的天花
DNS的原理介绍
Principle of universal gbase high availability synchronization tool in Nanjing University
使用 jMeter 对 SAP Spartacus 进行并发性能测试
Simply take stock reading notes (4/8)
从39个kaggle竞赛中总结出来的图像分割的Tips和Tricks
谈谈我写作生涯的画图技巧
随机推荐
I'm doing open source in Didi
Database connection pool & jdbctemplate
上午面了个腾讯拿 38K 出来的,让我见识到了基础的天花
Kotlin process control and circulation
【云原生】Nacos中的事件发布与订阅--观察者模式
Storage Basics
由扫地增而引起的小叙
View and modify the MySQL data storage directory under centos7
Flume common commands and basic operations
Iterator details in list... Interview pits
Laravel文档阅读笔记-mews/captcha的使用(验证码功能)
Distance measuring sensor chip 4530a used in home intelligent lighting
Insmod prompt invalid module format
10 minute fitness method reading notes (3/5)
Simply take stock reading notes (4/8)
自然语言处理系列(一)入门概述
RHCAS6
Notes for preparation of information system project manager --- information knowledge
Research: data security tools cannot resist blackmail software in 60% of cases
Transactions from December 29, 2021 to January 4, 2022