mirror of
https://github.com/prdlk/leetcode.git
synced 2026-11-02 21:22:43 +00:00
67 lines
2.3 KiB
Plaintext
67 lines
2.3 KiB
Plaintext
---
|
|
title: '496. Next Greater Element I'
|
|
description: The next greater element of some element x in an array is the first greater element that is to the right of x in the same array
|
|
icon: dot
|
|
topics:
|
|
- { name: "Array", slug: "array" }
|
|
- { name: "Hash Table", slug: "hash-table" }
|
|
- { name: "Stack", slug: "stack" }
|
|
- { name: "Monotonic Stack", slug: "monotonic-stack" }
|
|
issue: "https://github.com/prdlk/leetcode/issues/74"
|
|
companies:
|
|
- { name: "Google", period: "Thirty Days", frequency: 46.6 }
|
|
- { name: "Amazon", period: "Thirty Days", frequency: 39.1 }
|
|
- { name: "Bloomberg", period: "Three Months", frequency: 59.7 }
|
|
- { name: "Meta", period: "Three Months", frequency: 43.3 }
|
|
- { name: "Microsoft", period: "Three Months", frequency: 33.4 }
|
|
- { name: "tcs", period: "Six Months", frequency: 43.5 }
|
|
sidebar:
|
|
label: 'Next Greater Element I'
|
|
badge: 'Easy'
|
|
---
|
|
|
|
::::warning
|
|
Could you find an O(nums1.length + nums2.length) solution?
|
|
::::
|
|
|
|
### Example 1:
|
|
- Input: `nums1 = [4,1,2], nums2 = [1,3,4,2]`
|
|
- Output: `[-1,3,-1]`
|
|
- Explanation:
|
|
- The next greater element for each value of `nums1` is as follows:
|
|
- `4` is underlined in `nums2 = [1,3,4,2]`. There is no next greater element, so the answer is `-1`.
|
|
- `1` is underlined in `nums2 = [1,3,4,2]`. The next greater element is `3`.
|
|
- `2` is underlined in `nums2 = [1,3,4,2]`. There is no next greater element, so the answer is `-1`.
|
|
|
|
### Example 2:
|
|
- Input: `nums1 = [2,4], nums2 = [1,2,3,4]`
|
|
- Output: `[3,-1]`
|
|
- Explanation:
|
|
- The next greater element for each value of `nums1` is as follows:
|
|
- `2` is underlined in `nums2 = [1,2,3,4]`. The next greater element is `3`.
|
|
- `4` is underlined in `nums2 = [1,2,3,4]`. There is no next greater element, so the answer is `-1`.
|
|
|
|
### Constraints:
|
|
|
|
- `1 <= nums1.length <= nums2.length <= 1000`
|
|
- `0 <= nums1[i], nums2[i] <= 10^4`
|
|
- All integers in `nums1` and `nums2` are unique.
|
|
- All the integers of `nums1` also appear in nums2.
|
|
|
|
## Solution
|
|
|
|
```py
|
|
class Solution:
|
|
def nextGreaterElement(self, nums1: list[int], nums2: list[int]) -> list[int]:
|
|
mono_stack = []
|
|
next_greater = {}
|
|
|
|
for cur in nums2:
|
|
while mono_stack and cur > mono_stack[-1]:
|
|
val = mono_stack.pop()
|
|
next_greater[val] = cur
|
|
mono_stack.append(cur)
|
|
|
|
return [next_greater.get(x, -1) for x in nums1]
|
|
```
|