LeetCode 496 下一個更大的元素I
阿新 • • 發佈:2021-10-26
給你兩個 沒有重複元素 的陣列nums1
和nums2
,其中nums1
是nums2
的子集。
請你找出 nums1
中每個元素在nums2
中的下一個比其大的值。
nums1
中數字x
的下一個更大元素是指x
在nums2
中對應位置的右邊的第一個比x
大的元素。如果不存在,對應位置輸出 -1
。
示例 1:
輸入: nums1 = [4,1,2], nums2 = [1,3,4,2]. 輸出: [-1,3,-1] 解釋: 對於 num1 中的數字 4 ,你無法在第二個陣列中找到下一個更大的數字,因此輸出 -1 。 對於 num1 中的數字 1 ,第二個陣列中數字1右邊的下一個較大數字是 3 。 對於 num1 中的數字 2 ,第二個陣列中沒有下一個更大的數字,因此輸出 -1 。
示例 2:
輸入: nums1 = [2,4], nums2 = [1,2,3,4]. 輸出: [3,-1] 解釋: 對於 num1 中的數字 2 ,第二個陣列中的下一個較大數字是 3 。 對於 num1 中的數字 4 ,第二個陣列中沒有下一個更大的數字,因此輸出 -1 。
提示:
1 <= nums1.length <= nums2.length <= 1000
0 <= nums1[i], nums2[i] <= 104
nums1
和nums2
中所有整數 互不相同nums1
中的所有整數同樣出現在nums2
中
public static int[] nextGreaterElement(int[] nums1, int[] nums2) { if (nums1 == null || nums1.length == 0 || nums2 == null || nums2.length == 0) return new int[]{}; int length1 = nums1.length; int length2 = nums2.length; int[] ans = new int[length1]; for (int i = 0; i < length1; i++) { ans[i] = -1; boolean flag = false; for (int j = 0; j < length2; j++) { if (nums2[j] == nums1[i]) flag = true; if (flag && nums2[j] > nums1[i]) { ans[i] = nums2[j]; break; } } } return ans; }