原题
题目分析
设计栈,并在常数时间复杂度求栈的最小元素。内部维护一个列表实现栈的功能。
代码实现
public class MinStack
{
private List<int> _list;
private int _min;
/** initialize your data structure here. */
public MinStack()
{
_list = new List<int>();
}
public void Push(int x)
{
_list.Add(x);
if (_list.Count == 1)
_min = x;
if (x < _min)
_min = x;
}
public void Pop()
{
_list.RemoveAt(_list.Count - 1);
if(_list.Count>0)
_min = _list.Min();
}
public int Top()
{
return _list[_list.Count - 1];
}
public int GetMin()
{
return _min;
}
}