From c0f0e285dae31dc4cbe6f58903818cc45b4c7740 Mon Sep 17 00:00:00 2001 From: huangge1199 Date: Wed, 31 Mar 2021 15:33:29 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=9B=E6=89=A3=EF=BC=9A155:=E6=9C=80?= =?UTF-8?q?=E5=B0=8F=E6=A0=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/leetcode/editor/cn/MinStack.java | 93 +++++++++++++++++++ .../main/java/leetcode/editor/cn/MinStack.md | 39 ++++++++ 2 files changed, 132 insertions(+) create mode 100644 LeetCode/src/main/java/leetcode/editor/cn/MinStack.java create mode 100644 LeetCode/src/main/java/leetcode/editor/cn/MinStack.md diff --git a/LeetCode/src/main/java/leetcode/editor/cn/MinStack.java b/LeetCode/src/main/java/leetcode/editor/cn/MinStack.java new file mode 100644 index 0000000..f518fea --- /dev/null +++ b/LeetCode/src/main/java/leetcode/editor/cn/MinStack.java @@ -0,0 +1,93 @@ +//设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 +// +// +// push(x) —— 将元素 x 推入栈中。 +// pop() —— 删除栈顶的元素。 +// top() —— 获取栈顶元素。 +// 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. +// +// +// +// +// 提示: +// +// +// pop、top 和 getMin 操作总是在 非空栈 上调用。 +// +// Related Topics 栈 设计 +// 👍 856 👎 0 + +package leetcode.editor.cn; + +import java.util.Stack; + +//155:最小栈 +public class MinStack { + public static void main(String[] args) { + //测试代码 +// Solution solution = new MinStack().new Solution(); + + } + + //力扣代码 + //leetcode submit region begin(Prohibit modification and deletion) + class MinStack { + Stack stack; + Stack min; + public MinStack() { + stack = new Stack<>(); + min = new Stack<>(); + } + public void push(int val) { + if (stack.isEmpty()) { + min.push(val); + } else { + min.push(Math.min(min.peek(),val)); + } + stack.push(val); + } + public void pop() { + stack.pop(); + min.pop(); + } + public int top() { + return stack.peek(); + } + public int getMin() { + return min.peek(); + } + } + +/** + * Your MinStack object will be instantiated and called as such: + * MinStack obj = new MinStack(); + * obj.push(val); + * obj.pop(); + * int param_3 = obj.top(); + * int param_4 = obj.getMin(); + */ +//leetcode submit region end(Prohibit modification and deletion) + +} \ No newline at end of file diff --git a/LeetCode/src/main/java/leetcode/editor/cn/MinStack.md b/LeetCode/src/main/java/leetcode/editor/cn/MinStack.md new file mode 100644 index 0000000..a68fba2 --- /dev/null +++ b/LeetCode/src/main/java/leetcode/editor/cn/MinStack.md @@ -0,0 +1,39 @@ +

设计一个支持 pushpoptop 操作,并能在常数时间内检索到最小元素的栈。

+ +
    +
  • push(x) —— 将元素 x 推入栈中。
  • +
  • pop() —— 删除栈顶的元素。
  • +
  • top() —— 获取栈顶元素。
  • +
  • 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.
+
+ +

 

+ +

提示:

+ +
    +
  • poptopgetMin 操作总是在 非空栈 上调用。
  • +
+
Related Topics
  • 设计
  • \n
  • 👍 856
  • 👎 0
  • \ No newline at end of file