按照我的理解,对于一个列表,我们创建一个数组,来记录列表中每个数字或者字符出现的次数。
int[] ans = new int[1005];//这个长度根据题意来创建。
for(int i = 0;i<arr1.length;i++){
ans[arr1[i]]++;//记录每个数字出现的次数
}
classSolution{publicint[]relativeSortArray(int[] arr1,int[] arr2){int[] ans =newint[1005];for(int i =0;i<arr1.length;i++){
ans[arr1[i]]++;}int[] res =newint[arr1.length];int j =0;for(int i =0;i<arr2.length;i++){for(int k = ans[arr2[i]];k>0;k--){
res[j++]= arr2[i];}
ans[arr2[i]]=0;}for(int i =0;i<ans.length;i++){if(ans[i]!=0){for(int k =0;k<ans[i];k++){
res[j++]= i;}}}return res;}}