当前位置:网站首页>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();
}
}
边栏推荐
- JDBC exercise - query data encapsulated into object return & simple login demo
- Volatile instruction rearrangement and why instruction rearrangement is prohibited
- 《信息系统项目管理师》备考笔记---信息化知识
- NLP engineer learning summary and index
- A possible investment strategy and a possible fuzzy fast stock valuation method
- NFT: how to make money with unique assets?
- 前几年外包干了四年,秋招感觉人生就这样了..
- Distributed solution - Comprehensive decryption of distributed task scheduling platform -xxljob
- SAP UI5 视图里的 OverflowToolbar 控件
- Difference between JUnit theories and parameterized tests
猜你喜欢
2021-12-22 transaction record
10 minute fitness method reading notes (5/5)
Add a new cloud disk to Huawei virtual machine
DNS的原理介绍
Kotlin variable
Pytoch uses torchnet Classerrormeter in meter
前几年外包干了四年,秋招感觉人生就这样了..
SAP SEGW 事物码里的 ABAP Editor
从39个kaggle竞赛中总结出来的图像分割的Tips和Tricks
Taobao order interface | order flag remarks, may be the most stable and easy-to-use interface
随机推荐
I'm doing open source in Didi
Taobao order amount check error, avoid capital loss API
自然语言处理系列(一)入门概述
The relationship between the size change of characteristic graph and various parameters before and after DL convolution operation
跨平台(32bit和64bit)的 printf 格式符 %lld 输出64位的解决方式
Storage Basics
由扫地增而引起的小叙
SAP UI5 DynamicPage 控件介绍
2021.12.16-2021.12.20 empty four hand transaction records
Pytoch monolayer bidirectional_ LSTM implements MNIST and fashionmnist data classification
Alipay transfer system background or API interface to avoid pitfalls
Halcon 模板匹配实战代码(一)
10 minute fitness method reading notes (3/5)
Transactions on December 23, 2021
以VMware创新之道,重塑多云产品力
10 minute fitness method reading notes (1/5)
研究:数据安全工具在 60% 的情况下无法抵御勒索软件
Kotlin process control and circulation
Full text search of MySQL
非技术部门,如何参与 DevOps?