leetcode 739. Daily Temperatures 每日温度

题解

数组stack作为栈,通过append和切片模拟入栈出栈操作

  1. 迭代数组T
  2. 数组T的索引0入栈
  3. 迭代的值大于栈顶索引的值,即v > T[stack[len(stack)-1]],则栈顶元素出栈,并存入res
  4. 重复步骤3, 直到栈为空 或 v不大于T[stack[len(stack)-1]]
  5. 数组T迭代完毕,返回数组res

示例代码(go)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
func dailyTemperatures(T []int) []int {
res := make([]int, len(T))
stack := make([]int, 0)
for i, v := range T {
for len(stack) > 0 {
if v > T[stack[len(stack)-1]] {
res[stack[len(stack)-1]] = i - stack[len(stack)-1]
stack = stack[:len(stack)-1]
} else {
break
}
}
stack = append(stack, i)
}
return res
}