We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
1 parent d350f8f commit a21ac4aCopy full SHA for a21ac4a
Stack/155.Min-Stack/Readme.md
@@ -1,5 +1,6 @@
1
### 155.Min-Stack
2
3
+#### 解法1:
4
要做到实时得到getMin(),不妨就对栈内的每一个元素都记录下对应的当前栈内元素最小值。于是我们可以构建另一个栈StackMin,跟随数据本身的Stack同步进退。
5
```cpp
6
void push(int x)
@@ -11,3 +12,11 @@
11
12
StackMin.push(min(x,StackMin.top()));
13
}
14
```
15
+
16
+#### 解法2:
17
+有一种更省空间的解法。就是压入栈内的元素不直接是x,而是```delta = x-Min```,注意其中Min是考虑了x之后的本轮最新值。
18
19
+反弹的时候,考虑栈顶元素的正负号:
20
21
+1. 如果是正号,说明该轮入栈的时候的x比Min大,所以弹出的元素应该是delta+Min,而Min保持不变。
22
+2. 如果是负号,说明该轮入栈的时候的x比Min小,所以弹出的元素应该是Min-|delta|,并且Min需要更新。
0 commit comments