Skip to content

Commit d848838

Browse files
authored
feat: add a description of the solution to lcof problem: No.30 (doocs#670)
面试题 30. 包含 min 函数的栈
1 parent 9026e0b commit d848838

File tree

1 file changed

+8
-0
lines changed
  • lcof/面试题30. 包含min函数的栈

1 file changed

+8
-0
lines changed

lcof/面试题30. 包含min函数的栈/README.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,14 @@ minStack.min(); --> 返回 -2.
2323

2424
## 解法
2525

26+
- 若是无视时间复杂度需求,使用暴力解法:执行 `min()` 时,遍历整个栈,找到最小数返回,时间复杂度是 O(n);
27+
- 若是使用一个变量记录最小数,可以将时间复杂度拉到 O(1)。可是当最小数出栈之后就麻烦了,因为不知道第二小的数是谁;
28+
- 因此需要的是一个结构,当最小值离开,暴漏第二小的值,以此类推;
29+
- 此时使用一个新的栈,存储最小值,保证该栈顶元素为栈中最小数(称此栈为最小栈);
30+
-`push()` 时,该值只有比最小栈栈顶元素更小,才放入最小栈当中;
31+
- 当最小值出栈时,最小栈进行出栈操作(`pop()`);
32+
- 不会有出栈问题,最小栈栈底存放了正常栈中栈底的元素。
33+
2634
<!-- tabs:start -->
2735

2836
### **Python3**

0 commit comments

Comments
 (0)