You are given two arrays(without duplicates)nums1
andnums2
wherenums1
’s elements are subset ofnums2
. Find all the next greater numbers fornums1
's elements in the corresponding places ofnums2
.
The Next Greater Number of a numberxinnums1
is the first greater number to its right innums2
. If it does not exist, output -1 for this number.
Example 1:
Input:
nums1
= [4,1,2],
nums2
= [1,3,4,2].
Output:
[-1,3,-1]
Explanation:
For number 4 in the first array, you cannot find the next greater number for it in the second array, so output -1.
For number 1 in the first array, the next greater number for it in the second array is 3.
For number 2 in the first array, there is no next greater number for it in the second array, so output -1.
Example 2:
Input:
nums1
= [2,4],
nums2
= [1,2,3,4].
Output:
[3,-1]
Explanation:
For number 2 in the first array, the next greater number for it in the second array is 3.
For number 4 in the first array, there is no next greater number for it in the second array, so output -1.
Note:
- All elements in
nums1
andnums2
are unique. - The length of both
nums1
andnums2
would not exceed 1000.
Subscribeto see which companies asked this question.
Hide Tags
Hide Similar Problems
public class Solution {
public int[] nextGreaterElement(int[] findNums, int[] nums) {
int[] result = new int[findNums.length];
for(int i=0;i<findNums.length;i++){
result[i] = -1;
int findNum = findNums[i];
int findIndex = -1;
for(int j=0;j<nums.length;j++){
if(nums[j] == findNum){
findIndex = j;
continue;
}
if(findIndex > -1 && nums[j] > findNum){
result[i] = nums[j];
break;
}
}
}
return result;
}
}