先把arr2中的数按顺序拿完,在把桶中剩下的按顺序拿完。
class Solution {
public int[] relativeSortArray(int[] arr1, int[] arr2) {
int[] temp = new int[1001];
for(int arr : arr1) temp[arr]++;
int index = 0;
for(int i = 0; i < arr2.length; i++){
while(temp[arr2[i]] > 0){
temp[arr2[i]]--;
arr1[index++] = arr2[i];
}
}
for(int i = 0; i < temp.length; i++){
while(temp[i] > 0){
temp[i]--;
arr1[index++] = i;
}
}
return arr1;
}
}
本文介绍了一种相对排序算法实现方法,该方法首先遍历数组arr1,并使用计数数组记录每个元素出现次数;接着根据数组arr2的顺序,将arr2中的元素按出现次数放入结果数组;最后再将不在arr2中出现的元素按顺序加入结果数组。
655

被折叠的 条评论
为什么被折叠?



