1.給棧新增一個獲取最小值的方法(元素為Integer型),要求時間複雜度為O(1)
阿新 • • 發佈:2018-12-16
分析:在資料結構與演算法中,當要求時間複雜度最小時基本都是要犧牲空間複雜度。棧是先進後出,此處要求用棧實現一個獲取最小值的方法且時間複雜度為O(1),首先考慮的方向就是再借助一個棧來實現,這個棧主要用來儲存最小值序列(這個地方可以思考一下為什麼不能用一個變數來儲存最小值)。
下面直接附上程式碼:
public class StackMin{ Stack<Integer> stackDate=new Stack<>();//一個普通棧,存入進入棧的元素 Stack<Integer> stackMin=new Stack<>();//存入最小值序列public void push(Integer num){ stackDate.push(num); if(stackMin.isEmpty()){ stackMin.push(num); }else{ if(num<stackMin.peek()){ stackMin.push(num); }else{ stackMin.push(stackMin.peek()); } } }public Integer pop(){ Integer data=stackDate.pop(); if(data==stackMin.peek()){ stackMin.pop(); } return data; } public Integer getMin(){ return stackMin.peek(); } }