LeetCode No.496下一个更大元素I

mac2025-03-22  12

class Solution { public int[] nextGreaterElement(int[] nums1, int[] nums2) { int[] result=new int[nums1.length]; Map<Integer,Integer> map=new HashMap<>(); for(int i=0;i<nums2.length;i++){ map.put(nums2[i],i); //将数组2中的数以及位置放到map中 } for(int i=0;i<nums1.length;i++){ int index=map.get(nums1[i]); //找到数组1中的数在数组2中的位置索引 if(index==nums2.length-1) result[i]=-1; for(int j=index+1;j<nums2.length;j++){//从index后面的位置开始找大的数 if(nums2[j]>nums2[index]){ result[i]=nums2[j]; break;//找到就不用继续遍历 } if(j==nums2.length-1) //遍历到最后一个数时 result[i]=-1; } } return result; } } //98.56% 68.97% 程序代码上还有待精简 评论区高赞解法: 将nums2中的每个元素作为键,后面第一个比他大的元素作为值(利用栈找),存入hashmap中,之后遍历nums1就可直接找到答案
最新回复(0)