最小栈的实现
前言
要求:
实现一个栈,改栈带有出栈,入栈,和取栈中最小数。要求时间复杂度都是o(1);
实现
C# 代码:
class Program
{
private static Stack<int> mainStack = new Stack<int>();
private static Stack<int> MinStack = new Stack<int>();
private static void pushStack(int element)
{
mainStack.Push(element);
if (MinStack.Count == 0 || element <= MinStack.Peek())
{
MinStack.Push(element);
}
}
private static int popStack()
{
if (mainStack.Count == 0)
{
throw new Exception("没有对象了");
}
if (MinStack.Peek() == mainStack.Peek())
{
MinStack.Pop();
}
return mainStack.Pop();
}
private static int getMini()
{
if (MinStack.Count == 0)
{
throw new Exception("没有对象了");
}
return MinStack.Pop();
}
static void Main(string[] args)
{
popStack();
Console.WriteLine("Hello World!");
}
}