题目描述
分析
观察题目要求,可以看到数组元素的大小是有限的,因此本题可用计数排序
算法
计数排序
过程
统计合法范围内的所有数字出现次数
这个统计是一个数组
遍历统计结果,看每一个数字出现的次数,重新构建数组
代码
/**
* @param {number[]} arr1
* @param {number[]} arr2
* @return {number[]}
*/
var relativeSortArray = function (arr1, arr2) {
const count = new Array(1001).fill(0)
for (const x of arr1) {
count[x]++
}
const res = []
for (const x of arr2) {
while (count[x]) {
res.push(x)
count[x]--
}
}
for (let i = 0; i < count.length; i++) {
while (count[i]) {
res.push(i)
count[i]--
}
}
return res
}