牛客网: BM43
题目: 正常出入栈,同时可获取当前栈中最小元素
思路: 初始化双栈stack1, stack2; 正常出入栈选择stack1, 使用stack2记录当前最小元素,即入栈时比较stack2栈顶元素与当前元素大小,入栈较小的值。
代码:
- // go
-
- package main
-
- var stack1 = []int{}
- var stack2 = []int{}
-
- func Push(node int) {
- // write code here
- stack1 = append(stack1, node)
- if len(stack2) == 0 {
- stack2 = append(stack2, node)
- } else {
- if node < stack2[len(stack2)-1] {
- stack2 = append(stack2, node)
- } else {
- stack2 = append(stack2, stack2[len(stack2)-1])
- }
- }
-
- }
-
- func Pop() {
- // write code here
- stack1 = stack1[:len(stack1)-1]
- stack2 = stack2[:len(stack2)-1]
- }
- func Top() int {
- // write code here
- return stack1[len(stack1)-1]
- }
- func Min() int {
- // write code here
- return stack2[len(stack2)-1]
- }