Skip to content

Next Greater Element

LeetCode Problem

# https://leetcode.com/problems/next-greater-element-i/
# Input: nums1 = [4,1,2], nums2 = [1,3,4,2]
# Output: [-1,3,-1]


class Solution:
    def nextGreaterElement(self, nums1, nums2):
        stack = []
        hmp = {}
        for i in nums2:
            while (
                stack and stack[-1] < i
            ):  # greater element found : map stack's top element to greater element
                hmp[stack[-1]] = i
                stack.pop()
            # otherwise
            stack.append(i)
        # hmp
        # 1 -> 3
        # 3 -> 4
        # 4 -> -1
        # 2 -> -1
        return [
            hmp.get(x, -1) for x in nums1
        ]  # return answer if no greater element : return -1