Leetcode155
题目
设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。
分析
已知:无。。。目标:设计出一个支持push,pop,top,操作的最小元素的栈。
解法一
这题不动脑子就直接敲一个他要啥操作我们就操作出啥的代码来。
public class MinStack
{
Stack<int> s = new Stack<int>();
Stack<int> mS = new Stack<int>();
/** initialize your data structure here. */
public MinStack()
{
}
public void Push(int x)
{
s.Push(x);
if(mS.Count==0)
{
mS.Push(x);
}
else
{
if(mS.Peek()>=x)
{
mS.Push(x);
}
}
}
public void Pop()
{
if(s.Count==0)
{
return;
}
int i=s.Peek();
s.Pop();
if(mS.Peek()==i)
{
mS.Pop();
}
}
public int Top()
{
return s.Peek();
}
public int GetMin()
{
return mS.Peek();
}
}
效果还挺好
解法二
由于我懒所有有了以下直接调用已有的懒惰之举
public class MinStack {
private Stack<int> myStack;
public MinStack()
{
myStack = new Stack<int>();
}
public void Push(int x)
{
myStack.Push(x);
}
public void Pop()
{
myStack.Pop();
}
public int Top()
{
return myStack.FirstOrDefault();
}
public int GetMin()
{
return myStack.Min();
}
}
效果感人