1. 程式人生 > >劍指offer-20:包含min函式的棧

劍指offer-20:包含min函式的棧

題目描述

定義棧的資料結構,請在該型別中實現一個能夠得到棧中所含最小元素的min函式(時間複雜度應為O(1))。

思路

應用一個輔助棧,壓的時候,如果A棧的壓入比B棧(輔助棧)壓入大,B棧不壓,小於等於,AB棧同時壓入。出棧,如果AB棧頂元素不等,A出,B不出。

程式碼

public class Solution20 {

    private Stack<Integer> stack1 = new Stack<>();
    private Stack<Integer> stack2 = new Stack<>
(); void push(int value) { stack1.push(value); if (stack2.empty()) stack2.push(value); else if (value <= stack2.peek()) { stack2.push(value); } } void pop() { if (stack1.peek() == stack2.peek()) stack2.pop()
; stack1.pop(); } int top() { return stack1.peek(); } int min() { return stack2.peek(); } }