496. Next Greater Element I
来源:互联网 发布:人肉软件是什么 编辑:程序博客网 时间:2024/06/08 08:51
问题描述:给你两个int数组,数组1是数组2的子集并且数组1,数组2中没有重复的数。查找数组1的数在数组2中,后续是否有比它大的数。有则返回数字,没有则返回-1;
思路:用map储存数组1中各个数字位置。遍历数组2时,从map中记录的位置开始遍历,从而提升效率。
原答案:
public int[] nextGreaterElement(int[] nums1, int[] nums2) { int length=nums2.length; if(length==0) return nums1; int maxNum=nums2[0]; Map<Integer,Integer> map=new HashMap<Integer,Integer>(); for(int i=0;i<length;i++){ if(nums2[i]>maxNum) maxNum=nums2[i]; map.put(nums2[i],i); } int nums1length=nums1.length; int[] res=new int[nums1length]; for(int j=0;j<nums1length;j++){ if(nums1[j]>maxNum){ res[j]=-1; break; } res[j]=-1; int pos=map.get(nums1[j]); for(int k=pos+1;k<length;k++){ if(nums2[k]>nums1[j]){ res[j]=nums2[k]; break; } } } return res; }
最佳答案:
public int[] nextGreaterElement(int[] nums1, int[] nums2) { int [] ret=new int[nums1.length]; int max=Integer.MIN_VALUE; int min=Integer.MAX_VALUE; Arrays.fill(ret,-1); for(int a: nums2){ max=Math.max(max,a); min=Math.min(min,a); } int [] index=new int[max-min+1]; for(int i =0;i<nums2.length; i++){ index[nums2[i]-min]=i; } for(int i=0;i<nums1.length;i++){ int need=nums1[i]; for(int j=index[need-min];j<nums2.length;j++){ if(nums2[j]>need){ ret[i]=nums2[j]; break; } } } return ret; }
尽管题目没有明确给出数组的上下界。但是可以先遍历数组找出上下界然后构造一个记录的数组。这要比map好些。
阅读全文
0 0
- 496. Next Greater Element I
- 496. Next Greater Element I
- 496. Next Greater Element I
- 496. Next Greater Element I
- 496. Next Greater Element I
- 496. Next Greater Element I
- 496. Next Greater Element I
- 496. Next Greater Element I
- 496. Next Greater Element I
- 496. Next Greater Element I
- 496. Next Greater Element I
- 496. Next Greater Element I
- 496. Next Greater Element I
- 496.Next Greater Element I
- 496. Next Greater Element I
- 496. Next Greater Element I
- 496. Next Greater Element I
- 496. Next Greater Element I
- JpaRepository查询方法名规范
- STL概述
- (信息学奥赛一本通 1299)糖果
- New Document
- GET和POST的区别
- 496. Next Greater Element I
- 内联函数inline
- dsetup.dll(附dsetup.dll文件丢失修复方法)
- C4GPLT_L1-001_HelloWorld
- java中主窗体关闭子窗体不关闭的解决办法
- SQL SELECT INTO
- models 更新
- 性能测试指标之数据库指标
- 《CS PhD Journey》Chapter 1 Fall 2017