【面试题21】包含min函数的栈

【题目描述】

定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的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     }

 

posted @ 2015-09-13 02:06  叫我霍啊啊啊  阅读(166)  评论(0编辑  收藏  举报