C#集合練習題(棧Stack)
阿新 • • 發佈:2018-12-26
實現一個棧
要求實現出棧pop(),入棧push(),Min返回最小值的操作的時間複雜度為o(1);
思路:要使這些操作的時間複雜度為o(1),則必須保證棧的每個元素只被遍歷一次
class MyStack { Stack<int> myStack = new Stack<int>(); Stack<int> minStcak = new Stack<int>();//存最小值的棧 //屬性:獲取minStack的頂部元素 也就是myStack的最小值 public int MinValue { get { return minStcak.Peek(); } } public void Push(int value) { myStack.Push(value); //判斷minStack是否為空 將第一個元素新增進去 if (minStcak.Count == 0) { minStcak.Push(value); } //如果新增進來的元素小於等於minStack的頂部元素就新增進來 if (value <= minStcak.Peek()) { minStcak.Push(value); } } public int Pop() { if (myStack.Peek() == minStcak.Peek()) minStcak.Pop(); return myStack.Pop(); } }
測試類