英语课看问题专用。。。手机查看较为方便
class Solution {
public int[] relativeSortArray(int[] arr1, int[] arr2) {
/**
1.采用map,将arr2作为建,然后对arr1中每一个值去map中根据arr2的值去查,存在就在对应值+1;
2.对不在map的放入另一个数组中
3.遍历arr2进行输出到arr1,然后对另一个数组排序输出到arr1*/
int[] temp=new int[arr1.length];
int k=0;
int[] res=new int[arr1.length];
int h=0;
Map<Integer,Integer> map=new HashMap();
//构建map
for(int i=0;i<arr2.length;i++){
map.put(arr2[i],0);
}
//遍历arr1把数据分类
for(int i=0;i<arr1.length;i++){
if(map.containsKey(arr1[i])){
map.put(arr1[i],map.get(arr1[i])+1);
}else{
//放在数组里
temp[k++]=arr1[i];
}
}
//读入最后数组
for(int i=0;i<arr2.length;i++){
while(map.get(arr2[i])>0){
res[h++]=map.get(arr2[i]);
map.put(arr2[i],map.get(arr2[i])-1);
}
}
//数组排序
Arrays.sort(temp);
int temp1=0;
//数组读入
for(int n=h;n<res.length;n++){
res[n]=temp[temp1++];
}
return res;
}
}