package LeetCode.OneThousandMore;
public class OneThousandOneHundredAndTwentyTwo {
public int[] relativeSortArray(int[] arr1, int[] arr2) {
// 进行计数排序
// 因为题目中最长长度为 1000
int [] nums = new int[1001];
// 将所有的数据都存入桶中
for (int i : arr1)
nums[i]++;
// 在arr2 中找到相对顺序,并在arr1中进行搜索排序
int idx = 0;
for (int num : arr2)
// 我们把数据已经存入了 nums 中,可以直接在原数组中进行排序,减少内存消耗
while (nums[num] -- > 0)
arr1[idx++] = num;
// 找在 arr1 中没有的数字进行按照大小排序
for (int j = 0; j < 1001; j++)
while (nums[j]-- > 0)
arr1[idx++] = j;
return arr1;
}
}
1122. 数组的相对排序(逐句解释代码)
最新推荐文章于 2022-12-02 16:43:18 发布