劍指 Offer 30. 包含min函式的棧 ---java
阿新 • • 發佈:2022-03-24
定義棧的資料結構,請在該型別中實現一個能夠得到棧的最小元素的 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.
來源:力扣(LeetCode)
連結: https://leetcode-cn.com/problems/bao-han-minhan-shu-de-zhan-lcof
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。
class MinStack { private Node head; //宣告連結串列指標 /** initialize your data structure here. */ public MinStack() { } public void push(int x) { if(head == null){ //不存在連結串列 head = new Node(x,x,null); //head指向新建連結串列節點,並且x為當前值和最小值,下一節點null }else{ head = new Node(x,Math.min(head.min,x),head); //存在節點,則新建當前x為值,最小值為head指向節點的min和x比較出最小,並且下一節點為當前head指標指向的節點 } } public void pop() { head = head.next; } public int top() { return head.val; } public int min() { return head.min; } private class Node{ //手動製作連結串列 int val; int min; Node next; public Node(int val,int min,Node next){ this.val = val; this.min = min; this.next = next; } } } /** * 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(); */