📊Next Greater Element I
Question (LC.496)
Example
Input: nums1 = [4,1,2], nums2 = [1,3,4,2]
Output: [-1,3,-1]Initial Approach
Code
public int[] nextGreaterElement(int[] nums1, int[] nums2) {
int[] results = new int[nums1.length];
for (int i = 0; i < nums1.length; i++) {
results[i] = nextGreaterHelper(nums1[i], nums2);
}
return results;
}
private int nextGreaterHelper(int element, int[] nums) {
// if element is not in nums or does not have a greater element
// return -1
if (nums == null || nums.length == 0) {
return -1;
}
int eleIndex = -1;
for (int i = 0; i < nums.length; i++) {
if (element == nums[i]) {
eleIndex = i;
break;
}
}
if (eleIndex == -1) {
return -1;
}
for (int i = eleIndex + 1; i < nums.length; i++) {
if (nums[i] > element) {
return nums[i];
}
}
return -1;
}Monotonic Stack Approach
Code
Last updated