496. Next Greater Element I
The next greater element of some element
xin an array is the first greater element that is to the right ofxin the same array.You are given two distinct 0-indexed integer arrays
nums1andnums2, wherenums1is a subset ofnums2.For each
0 <= i < nums1.length, find the indexjsuch thatnums1[i] == nums2[j]and determine the next greater element ofnums2[j]innums2. If there is no next greater element, then the answer for this query is-1.Return an array
ansof lengthnums1.lengthsuch thatans[i]is the next greater element as described above.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.
def nextGreaterElement(self, nums1: List[int], nums2: List[int]) -> List[int]:
ans = [0]*len(nums1)
for i in range(len(nums1)):
j = nums2.index(nums1[i])
ans[i]=-1
for x in range(j+1, len(nums2)):
if nums2[x]>nums2[j]:
ans[i]=nums2[x]
break
return ans