lc1019-链表中的下一个更大节点
题目描述
- 给定一个链表,找到每个节点后面第一个值比它大的节点
示例
输入:head = [2,1,5]
输出:[5,5,0]
输入:head = [2,7,4,3,5]
输出:[7,0,5,5,0]
题解
- 思路:单调栈
func nextLargerNodes(head *ListNode) []int {
nums := []int{}
for p := head; p != nil; p = p.Next { nums = append(nums, p.Val) }
res := make([]int, len(nums))
stk := make([]int, len(nums))
tt := -1
for i, v := range nums {
for tt >= 0 && nums[stk[tt]] < v {
res[stk[tt]] = v
tt --
}
tt ++
stk[tt] = i
}
return res
}

浙公网安备 33010602011771号