网站seo优化网站,北京家居网站建设,宿迁房产网丫丫找房,课程设计超市会员网站建设496. 下一个更大元素 I
解题思路
首先计算nums2的每一个元素的下一个比他大的元素#xff0c;使用单调栈将上面的结果和nums2中的每一个元素组成映射map针对每一个Nums1的元素 查询map 记录map 的value
class Solution {public int[] nextGreaterElement(int[] nums1, int[…496. 下一个更大元素 I
解题思路
首先计算nums2的每一个元素的下一个比他大的元素使用单调栈将上面的结果和nums2中的每一个元素组成映射map针对每一个Nums1的元素 查询map 记录map 的value
class Solution {public int[] nextGreaterElement(int[] nums1, int[] nums2) {// 计算nums2的每一个元素的下一个更大的元素int[] greater nextGreaterElement(nums2);// 转换为映射 将nums2的每一个元素和greater中的元素进行对应MapInteger,Integer greaterMap new HashMap();for(int i 0; i nums2.length; i){greaterMap.put(nums2[i],greater[i]);// 存储映射}// nums1 是 nums2的子集 所以根据greaterMap 可以得到结果// 从Nums2找到每一个元素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];StackInteger 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;}
}