题意:本题目刚刚接触可能会有一点想不通,这是正常的现象对题目的解释如下:
arr1的数组与arr2的数组中以arr2的数组进行排序,将arr1中的但是没有在arr2中不存在的元素,与arr2进行拼接
原题题干:
代码:
class Solution {
public int[] relativeSortArray(int[] arr1, int[] arr2) {
int upper=0;
for(int x:arr1){
upper=Math.max(x, upper);//求得数组中最大的元素
}
int[] fre = new int [upper+1];//新建一个“元素”出现频率的数组
for(int x:arr1){
fre[x]++;//对arr1的数组进行遍历
}
int[] ans=new int[arr1.length];//建立一个新的数组作为最后的输出数组
int index=0;
for(int x:arr2){
for(int i=0;i<fre[x];i++){
ans[index++]=x;//有将频率数组中的元素的数值输出
}
fre[x]=0;//
}
for(int x=0;x<=upper;x++){
for(int i=0;i<fre[x];i++){
ans[index++]=x;
}
}
return ans;
}
}
运行结果:
有问题的欢迎关注我的微信公众号:AI学习经历分享,加我微信交流~