代码随想录二刷Day58
今日任务
739.每日温度
496.下一个更大元素 I
语言:Go
739. 每日温度
链接:https://leetcode.cn/problems/daily-temperatures/
func dailyTemperatures(temperatures []int) []int {
res := make([]int, len(temperatures))
stack := []int{0}
for i := 1; i < len(temperatures); i++ {
for len(stack) > 0 && temperatures[i] > temperatures[stack[len(stack) - 1]] {
top := stack[len(stack) - 1]
stack = stack[:len(stack) - 1]
res[top] = i - top
}
stack = append(stack, i)
}
return res
}
496. 下一个更大元素 I
链接:https://leetcode.cn/problems/next-greater-element-i/
func nextGreaterElement(nums1 []int, nums2 []int) []int {
res := make([]int, len(nums1))
for i := 0; i < len(nums1); i++ {
res[i] = -1
}
mp := map[int]int{}
for i := 0; i < len(nums1); i++ {
mp[nums1[i]] = i
}
stack := []int{}
stack = append(stack, 0)
for i := 1; i < len(nums2); i++ {
for len(stack) > 0 && nums2[i] > nums2[stack[len(stack) - 1]] {
top := stack[len(stack) - 1]
if _, ok := mp[nums2[top]]; ok {
res[mp[nums2[top]]] = nums2[i]
}
stack = stack[:len(stack) - 1]
}
stack = append(stack, i)
}
return res
}