Merge pull request #427 from callmePicacho/patch-3

Update 0739.每日温度.md
This commit is contained in:
程序员Carl
2021-06-23 09:40:30 +08:00
committed by GitHub

View File

@ -217,47 +217,46 @@ Go
> 暴力法 > 暴力法
```go ```go
func dailyTemperatures(temperatures []int) []int { func dailyTemperatures(t []int) []int {
length:=len(temperatures) var res []int
res:=make([]int,length) for i := 0; i < len(t)-1; i++ {
for i:=0;i<length;i++{
j := i + 1 j := i + 1
if i==length-1{ for ; j < len(t); j++ {
res[i]=0 // 如果之后出现更高,说明找到了
} if t[j] > t[i] {
for j<length&&temperatures[i]>=temperatures[j]{//大于等于 res = append(res, j-i)
j++ break
}
if j<length&&temperatures[i]<temperatures[j]{
res[i]=j-i
}
if j==length{
res[i]=0
} }
} }
return res // 找完了都没找到
if j == len(t) {
res = append(res, 0)
}
}
// 最后一个肯定是 0
return append(res, 0)
} }
``` ```
> 单调栈法 > 单调栈法
```go ```go
func dailyTemperatures(temperatures []int) []int { // 单调递减栈
length:=len(temperatures) func dailyTemperatures(num []int) []int {
res:=make([]int,length) ans := make([]int, len(num))
stack := []int{} stack := []int{}
for i:=0;i<length;i++{ for i, v := range num {
//如果当前栈中存在元素,新来的元素大于栈顶的元素,则计算差值并弹出栈顶元素 // 栈不空,且当前遍历元素 v 破坏了栈的单调性
for len(stack)>0&&temperatures[i]>temperatures[stack[len(stack)-1]]{ for len(stack) != 0 && v > num[stack[len(stack)-1]] {
res[stack[len(stack)-1]]=i-stack[len(stack)-1]//存放结果集 // pop
stack=stack[:len(stack)-1]//删除stack[len(stack)-1]的元素 top := stack[len(stack)-1]
stack = stack[:len(stack)-1]
ans[top] = i - top
} }
//如果栈顶元素大于等于新来的元素则加入到栈中。当栈内元素个数为0时直接入栈
if len(stack)==0||temperatures[i]<=temperatures[stack[len(stack)-1]]{
stack = append(stack, i) stack = append(stack, i)
} }
} return ans
return res
} }
``` ```