【剑指offer】面试题30:包含min函数的栈(Java)
定義棧的數據結構,請在該類型中實現一個能夠得到棧的最小元素的 min 函數在該棧中,調用 min、push 及 pop 的時間復雜度都是 O(1)。
?
示例:
MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.min(); ? --> 返回 -3.
minStack.pop();
minStack.top(); ? ? ?--> 返回 0.
minStack.min(); ? --> 返回 -2.
?
提示:
各函數的調用總次數不超過 20000 次
思路:輔助棧
代碼:
class?MinStack?{
????Stack<Integer>?stack;
????Stack<Integer>?minstack;
????/**?initialize?your?data?structure?here.?*/
????public?MinStack()?{
????????stack?=?new?Stack();
????????minstack?=?new?Stack();
????}
????
????public?void?push(int?x)?{
????????stack.push(x);
????????if(minstack.isEmpty()||x<=minstack.peek()){
????????????minstack.push(x);
????????}else{
????????????minstack.push(minstack.peek());
????????}
????}
????public?void?pop()?{
????????stack.pop();
????????minstack.pop();
????}
????
????public?int?top()?{
????????return?stack.peek();
????}
????
????public?int?min()?{
????????return?minstack.peek();
????}
}
?
/**
?*?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();
?*/
總結
以上是生活随笔為你收集整理的【剑指offer】面试题30:包含min函数的栈(Java)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Leetcode--238. 除自身以外
- 下一篇: [数据库]数据库三级加锁协议深入理解