题目描述:
image.png
示例:
image.png
解题思路:
image.png

解:

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;

}