Java詳解獲取數(shù)組中每個(gè)元素的下一個(gè)更大元素
1. 題目解析給定兩個(gè)數(shù)組`nums1`和`nums2`,均包含不重復(fù)的元素,并且`nums1`是`nums2`的子集。編寫一個(gè)算法,獲取`nums1`中每個(gè)數(shù)字在`nums2`中對(duì)應(yīng)的下一個(gè)更大元素
1. 題目解析
給定兩個(gè)數(shù)組`nums1`和`nums2`,均包含不重復(fù)的元素,并且`nums1`是`nums2`的子集。編寫一個(gè)算法,獲取`nums1`中每個(gè)數(shù)字在`nums2`中對(duì)應(yīng)的下一個(gè)更大元素。
因?yàn)閿?shù)組`nums1`是`nums2`的子集,所以先獲取`nums2`中每個(gè)元素的下一個(gè)更大元素,構(gòu)建一個(gè)`map`,然后遍歷`nums1`,構(gòu)建最終的返回?cái)?shù)組。
首先,我們需要編寫一個(gè)函數(shù),通過(guò)棧獲取一個(gè)數(shù)組中每個(gè)元素的下一個(gè)更大元素,構(gòu)建一個(gè)`map`返回。
2. 實(shí)現(xiàn)算法
已經(jīng)有了數(shù)組`nums2`中每個(gè)元素對(duì)應(yīng)的下一個(gè)更大元素的`map`,我們只需遍歷`nums1`中每個(gè)元素,從`map`中獲取值,構(gòu)建返回?cái)?shù)組即可。
```java
public int[] nextGreaterElement(int[] nums1, int[] nums2) {
Map
Stack
for (int num : nums2) {
while (!() () < num) {
map.put(stack.pop(), num);
}
stack.push(num);
}
int[] result new int[nums1.length];
for (int i 0; i < nums1.length; i ) {
result[i] (nums1[i], -1);
}
return result;
}
```
3. 編寫本地測(cè)試方法
為了驗(yàn)證算法的正確性,我們編寫一個(gè)本地測(cè)試方法,并觀察控制臺(tái)輸出結(jié)果是否符合預(yù)期。
```java
public static void main(String[] args) {
Solution solution new Solution();
int[] nums1 {4, 1, 2};
int[] nums2 {1, 3, 4, 2};
int[] result (nums1, nums2);
((result));
}
```
4. 運(yùn)行本地測(cè)試方法
運(yùn)行本地測(cè)試方法,觀察控制臺(tái)輸出結(jié)果是否符合預(yù)期。如果輸出結(jié)果與預(yù)期一致,則說(shuō)明本地測(cè)試通過(guò)。
5. 平臺(tái)提交算法
經(jīng)過(guò)本地測(cè)試的驗(yàn)證,我們可以將算法提交到平臺(tái)進(jìn)行測(cè)試,以確保算法的正確性和效率。