Files
leetcode/top-100-liked/71/leetcode_test.go
T
2026-07-17 14:39:23 +08:00

63 lines
1.4 KiB
Go

package top100liked
import (
"fmt"
"testing"
)
// https://leetcode.cn/problems/daily-temperatures/?envType=study-plan-v2&envId=top-100-liked
func dailyTemperatures(temperatures []int) []int {
res := make([]int, len(temperatures))
stack := make([]int, 0, len(temperatures))
for i := len(temperatures) - 1; i >= 0; i-- {
for len(stack) > 0 && temperatures[stack[len(stack)-1]] <= temperatures[i] {
stack = stack[:len(stack)-1]
}
if len(stack) > 0 {
res[i] = stack[len(stack)-1] - i
}
stack = append(stack, i)
}
return res
}
// func dailyTemperatures(temperatures []int) []int {
// type item struct {
// Idx int
// Temp int
// }
// stack := []item{}
// res := make([]int, len(temperatures))
// for i := len(temperatures) - 1; i >= 0; i-- {
// cur := temperatures[i]
// if len(stack) == 0 {
// stack = append(stack, item{i, cur})
// res[i] = 0
// } else {
// for {
// if len(stack) == 0 {
// stack = append(stack, item{i, cur})
// res[i] = 0
// break
// }
// top := stack[len(stack)-1]
// if cur < top.Temp {
// res[i] = top.Idx - i
// stack = append(stack, item{i, cur})
// break
// } else {
// stack = stack[:len(stack)-1] // pop
// }
// }
// }
// }
// return res
// }
func Test(t *testing.T) {
fmt.Printf("%+v", dailyTemperatures([]int{73, 74, 75, 71, 69, 72, 76, 73}))
}