题目链接
法一
public int[] nextGreaterElement(int[] nums1, int[] nums2) {
Deque<Integer> sk = new LinkedList<>();
Map<Integer, Integer> mp = new HashMap<>();
int[] ans = new int[nums1.length];
for(int num : nums2){
while(!sk.isEmpty() && sk.peek() < num){
mp.put(sk.pop(), num);
}
sk.push(num);
}
for(int i = 0; i < nums1.length; i++){
ans[i] = mp.getOrDefault(nums1[i], -1);
}
return ans;
}
本地测试
lay.showTitle(496);
Solution496 sol496 = new Solution496();
int[] num496_1 = new int[]{4,1,2};
int[] num496_2 = new int[]{1,3,4,2};
int[] ans496 = sol496.nextGreaterElement(num496_1, num496_2);
arrayOpt.showIntArray(ans496, ans496.length);