【题目描述】
定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min,push及pop的时间复杂度都是O(1)。
【解决方案】
举例让抽象问题具体化,可以根据下图的例子进行构思。
我的代码实现,仅供参考:
1 class StackWithMin 2 { 3 Stack<int> stackNum = new Stack<int>(); 4 Stack<int> stackMin = new Stack<int>(); 5 6 public void Push(int value) 7 { 8 if (stackNum.Count < 1 || value <= stackMin.Peek()) 9 { 10 stackMin.Push(value); 11 } 12 else 13 { 14 stackMin.Push(stackMin.Peek()); 15 } 16 17 stackNum.Push(value); 18 } 19 20 public int Pop() 21 { 22 stackMin.Pop(); 23 24 return stackNum.Pop(); 25 } 26 27 public int Min() 28 { 29 return stackMin.Peek(); 30 } 31 }