1public int[] nextGreaterElement(int[] nums1, int[] nums2) {
2 Map<Integer, Integer> map = new HashMap<>();
3 Stack<Integer> stack = new Stack<>();
4
5 for (int num : nums2) {
6 while (!stack.isEmpty() && stack.peek() < num) {
7 map.put(stack.pop(), num);
8 }
9 stack.push(num);
10 }
11
12 int[] result = new int[nums1.length];
13 for (int i = 0; i < nums1.length; i++) {
14 result[i] = map.getOrDefault(nums1[i], -1);
15 }
16 return result;
17}