496. Next Greater Element I
Problem 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.
You are given two distinct 0-indexed integer arrays nums1
and nums2
, where nums1
is a subset of nums2
.
For each 0 <= i < nums1.length
, find the index j
such that nums1[i] == nums2[j]
and determine the next greater element of nums2[j]
in nums2
. If there is no next greater element, then the answer for this query is -1
.
Return an array ans
of length nums1.length
such that ans[i]
is the next greater element as described above.
Example 1:
1 | Input: nums1 = [4,1,2], nums2 = [1,3,4,2] |
Example 2:
1 | Input: nums1 = [2,4], nums2 = [1,2,3,4] |
Constraints:
1 <= nums1.length <= nums2.length <= 1000
0 <= nums1[i], nums2[i] <= 104
- All integers in
nums1
andnums2
are unique. - All the integers of
nums1
also appear innums2
.
Follow up:
Could you find an O(nums1.length + nums2.length)
solution?
Solution:
traverse nums2
stack to keep traversed element
when encounter an element nums2[i] > stk[-1]
, means nums2[i]
is the next greater element for some elements in the stack
1 | class Solution: |
time complexity: $O()$
space complexity: $O()$
reference:
related problem: