public class Solution {
public int[] nextGreaterElement(int[] nums1, int[] nums2) {
int len1 = nums1.length;
int len2 = nums2.length;
int[] ans = new int[len1];
ArrayList<Integer> a1 = new ArrayList<Integer>();
ArrayList<Integer> a2 = new ArrayList<Integer>();
for(int i=0;i<len2;i++){
a2.add(nums2[i]);
}
for(int j=0;j<len1;j++){
int temp = a2.indexOf(nums1[j]);
if(temp+1==len2) ans[j]=-1;
else{
for(int i=temp+1;i<=len2;i++){
if(i<len2){
if(nums2[i]>nums1[j]){
ans[j]=nums2[i];
break;
}
if(nums2[i]<=nums1[j]){
continue;
}
}
if(i==len2){
ans[j]=-1;
break;
}
}
}
}
return ans;
}
}
这是我写的第一版,运行速度超慢TAT, 改版如下:
public class Solution {
public int[] nextGreaterElement(int[] nums1, int[] nums2) {
Map<Integer,Integer> map = new HashMap<Integer,Integer>();
int[] ans = new int[nums1.length];
for(int i=0;i<nums2.length;i++){
int big=-1;
for(int j=i+1;j<nums2.length;j++){
if(nums2[j]>nums2[i]){
big=nums2[j];
break;
}
}
map.put(nums2[i],big);
}
for(int i=0;i<nums1.length;i++){
ans[i] = map.get(nums1[i]);
}
return ans;
}
}