思路:
使用一个主栈存储所有元素,使用另一个辅助栈存储元素整体的最小值的变化过程。对于辅助栈:当栈空或当前元素小于栈内最小值,则说明栈内最小值需要更新,然后将当前元素压栈;否则说明栈内最小值不需要变化,只需复制原最小值并压栈。即通过记录整体最小值的变化过程得到位于每一个索引的当前最小值。
个人理解:
完整代码:
public class MinStack
{
private List<int> current;
private List<int> assist;
public MinStack()
{
current = new List<int>();
assist = new List<int>();
}
public void Push(int val)
{
current.Add(val);
if(assist.Count == 0 || val < assist.Last()) assist.Add(val);
else assist.Add(assist.Last());
}
public void Pop()
{
current.RemoveAt(current.Count - 1);
assist.RemoveAt(assist.Count - 1);
}
public int Top() => current.Last();
public int GetMin() => assist.Last();
}
提交记录:


589

被折叠的 条评论
为什么被折叠?



