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
}
posted @ 2025-09-06 21:42  余越  阅读(19)  评论(0)    收藏  举报