From f0a4209eaec07cd0eb8bb7ff15be34f8adb1437c Mon Sep 17 00:00:00 2001 From: Jack Sangdahl Date: Mon, 25 Aug 2025 13:07:56 -0600 Subject: 1019. next greater node in linked list --- next_greater_node_link_list.py | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 next_greater_node_link_list.py (limited to 'next_greater_node_link_list.py') diff --git a/next_greater_node_link_list.py b/next_greater_node_link_list.py new file mode 100644 index 0000000..70d9d79 --- /dev/null +++ b/next_greater_node_link_list.py @@ -0,0 +1,35 @@ +# 1019. Next Greater Node In Linked List +from leetcode import listnode_build + +""" +you are given the 'head' of a linked list with 'n' nodes. for each node in +the list, find the value of the next greater node. that is, for eachnode, +find the value of the first node that is next to it and has a stricty larger +value than it. return an integer array 'answer' where 'answer[i]' is the +value of the next greter node of the i'th node (1-indexed). if the i'th node +does not have a next greater node, set 'ans[i] = 0'. +""" + + +class Solution(object): + def nextLargerNodes(self, head): + """ + :type head: Optional[ListNode] + :rtype: List[int] + """ + ans, stack = [], [] + while head: + while stack and stack[-1][1] < head.val: + ans[stack.pop()[0]] = head.val + stack.append([len(ans), head.val]) + ans.append(0) + head = head.next + return ans + + +if __name__ == "__main__": + obj = Solution() + h1 = listnode_build(vals=[2, 1, 5]) + h2 = listnode_build(vals=[2, 7, 4, 3, 5]) + print(obj.nextLargerNodes(h1)) + print(obj.nextLargerNodes(h2)) -- cgit v1.2.3