Skip to content

Latest commit

 

History

History

155.Min-Stack

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

155.Min-Stack

解法1:

要做到实时得到getMin(),不妨就对栈内的每一个元素都记录下对应的当前栈内元素最小值。于是我们可以构建另一个栈StackMin,跟随数据本身的Stack同步进退。

    void push(int x) 
    {
        Stack.push(x);
        if (StackMin.empty())
            StackMin.push(x);
        else
            StackMin.push(min(x,StackMin.top()));
    }

解法2:

有一种更省空间的解法。就是压入栈内的元素不直接是x,而是delta = x-Min_old

入栈的时候,如果delta为正数,那么说明Min变量需要更新为Min_new = Min_old,否则就是Min_new = x

出栈的时候,我们看到的是栈顶元素delta,以及Min_new。我们需要复原的是x和Min_old:

  1. 如果delta是正号,说明Min_old = Min_new,然后推出x = delta+Min_old.
  2. 如果delta是负号,说明x = Min_new,然后推出Min_old = x-delta.

Leetcode Link