剑指Offer系列_30_包含min函数的栈
2024-09-02 18:08:12
以空间换时间:
package leetcode.sword_to_offfer.day01;
import java.util.Stack;
/**
* 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。
* <p>
* 示例:
* <p>
* MinStack minStack = new MinStack();
* minStack.push(-2);
* minStack.push(0);
* minStack.push(-3);
* minStack.min(); --> 返回 -3.
* minStack.pop();
* minStack.top(); --> 返回 0.
* minStack.min(); --> 返回 -2.
* <p>
* <p>
* Your MinStack object will be instantiated and called as such:
* MinStack obj = new MinStack();
* obj.push(x);
* obj.pop();
* int param_3 = obj.top();
* int param_4 = obj.min();
*
* @author soberw
* @Classname MinStack
* @Description
* @Date 2022-02-07 9:16
*/
public class MinStack {
private final Stack<Integer> st;
private int minValue = Integer.MAX_VALUE; //存放最小值
/**
* initialize your data structure here.
*/
public MinStack() {
st = new Stack<>();
}
public void push(int x) {
st.push(minValue); //存入当前最小值
minValue = Math.min(x, minValue); //保证当前minValue最小
st.push(x); // 存入数据
}
public void pop() {
st.pop(); //出栈
minValue = st.pop(); //存放的最小值出栈
}
public int top() {
return st.peek();
}
public int min() {
return minValue;
}
}
简单示意图:
最新文章
- Java开发环境搭建——Idea开发环境
- Android内存清理
- ubuntu14.04 JDK安装
- hmtl弹出框样式
- 发现struct proc_dir_entry内核3.10.17移到internal中去了,倒
- JavaScript-插入concat,splice,截取slice
- python num[y array
- hdu 4662 MU Puzzle
- xcode设置 - App内存暴增
- 20151210 Jquery 学习笔记 AJAX 进阶
- 几款常用Eclipse java插件
- MySQL分支Percona,折腾中,先科普一下
- [置顶] ios App 中嵌入应用商店
- FREESWITCH SEESION
- 使用cocapods报错 [!] Your Podfile has had smart quotes sanitised. To avoid issues in the future, you should not use TextEdit for editing it. If you are not using TextEdit, you should turn off smart quotes
- strval
- 安装anaconda与tensorflow
- pc端移动端拖拽实现
- Java——值传递与引用传递
- CF1146 Forethought Future Cup Elimination Round Tutorial