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})) }