Skip to content

Commit a21ac4a

Browse files
authored
Update Readme.md
1 parent d350f8f commit a21ac4a

File tree

1 file changed

+9
-0
lines changed

1 file changed

+9
-0
lines changed

Stack/155.Min-Stack/Readme.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
### 155.Min-Stack
22

3+
#### 解法1:
34
要做到实时得到getMin(),不妨就对栈内的每一个元素都记录下对应的当前栈内元素最小值。于是我们可以构建另一个栈StackMin,跟随数据本身的Stack同步进退。
45
```cpp
56
void push(int x)
@@ -11,3 +12,11 @@
1112
StackMin.push(min(x,StackMin.top()));
1213
}
1314
```
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

Comments
 (0)