496. 下一個更大元素 I
解題思路
- 首先計算nums2的每一個元素的下一個比他大的元素,使用單調(diào)棧
- 將上面的結(jié)果和nums2中的每一個元素組成映射map
- 針對每一個Nums1的元素 查詢map 記錄map 的value
class Solution {public int[] nextGreaterElement(int[] nums1, int[] nums2) {int[] greater = nextGreaterElement(nums2);Map<Integer,Integer> greaterMap = new HashMap<>();for(int i =0; i < nums2.length; i++){greaterMap.put(nums2[i],greater[i]);}int[] res = new int[nums1.length];for(int i = 0; i < nums1.length; i++){res[i] = greaterMap.get(nums1[i]);}return res;}public int[] nextGreaterElement(int[] nums){int n = nums.length;int[] res = new int[n];Stack<Integer> s = new Stack<>();for(int i = n - 1; i >= 0; i--){while(!s.isEmpty() && s.peek() <= nums[i]){s.pop();}res[i] = s.isEmpty() ? -1 : s.peek();s.push(nums[i]);}return res;}
}