LeetCode 1019. 链表中的下一个更大节点
题目描述
思路分析
单调递减栈
参考代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
func nextLargerNodes(head *ListNode) []int {
var nums []int
cur := head
for cur != nil {
nums = append(nums, cur.Val)
cur = cur.Next
}
res := make([]int, len(nums))
var stack []int
for i, num := range nums {
for len(stack) > 0 && num > nums[stack[len(stack)-1]] {
res[stack[len(stack)-1]] = num
stack = stack[:len(stack)-1]
}
stack = append(stack, i)
}
return res
}
- 时间复杂度:O(n),每个元素最多进栈出栈一次;
- 空间复杂度:O(n),用了切片存储链表值和栈,最坏为 O(n)。
1
write your code here
相似题目
CC BY-NC-SA 4.0
许可协议,转载请注明出处!
本博客所有文章除特别声明外,均采用