diff --git a/problems/0739.每日温度.md b/problems/0739.每日温度.md index eeea6ead..e72fd6a4 100644 --- a/problems/0739.每日温度.md +++ b/problems/0739.每日温度.md @@ -217,47 +217,46 @@ Go: > 暴力法 ```go -func dailyTemperatures(temperatures []int) []int { - length:=len(temperatures) - res:=make([]int,length) - for i:=0;i t[i] { + res = append(res, j-i) + break + } } - for j=temperatures[j]{//大于等于 - j++ - } - if j 单调栈法 ```go -func dailyTemperatures(temperatures []int) []int { - length:=len(temperatures) - res:=make([]int,length) - stack:=[]int{} - for i:=0;i0&&temperatures[i]>temperatures[stack[len(stack)-1]]{ - res[stack[len(stack)-1]]=i-stack[len(stack)-1]//存放结果集 - stack=stack[:len(stack)-1]//删除stack[len(stack)-1]的元素 - } - //如果栈顶元素大于等于新来的元素,则加入到栈中。当栈内元素个数为0时,直接入栈 - if len(stack)==0||temperatures[i]<=temperatures[stack[len(stack)-1]]{ - stack = append(stack, i) +// 单调递减栈 +func dailyTemperatures(num []int) []int { + ans := make([]int, len(num)) + stack := []int{} + for i, v := range num { + // 栈不空,且当前遍历元素 v 破坏了栈的单调性 + for len(stack) != 0 && v > num[stack[len(stack)-1]] { + // pop + top := stack[len(stack)-1] + stack = stack[:len(stack)-1] + + ans[top] = i - top } + stack = append(stack, i) } - return res + return ans } ```