- 解:
- public int[] nextGreaterElement(int[] nums1, int[] nums2) {
- int m=nums1.length;
- int n=nums2.length;
- int[] res=new int[m];//初始化与nums1等长的查询数组
- for(int i=0;i<m;i++){//遍历nums1中的所有元素
- int j=0;
- while(j<n && nums2[j]!=nums1[i]){//从前向后遍历nums2中的元素,直nums2[j]=nums1[i]
- j++;
- }
- int k=j+1;//找到与nums1[i]相等的元素后,从j+1继续向后遍历,直至找到nums2[k]>nums2[j]
- while(k<n && nums2[k]<nums2[j]){//因为数组中没有重复的元素,所以不是小于就是大于
- k++;
- }
- res[i]=k<n?nums2[k]:-1;//如果找到了nums2[k],则将res[i]置为nums2[k],否则置为-1
- }
- return res;
- }


