给你两个数组,arr1 和 arr2,
示例:
输入:arr1 = [2,3,1,3,2,4,6,7,9,2,19], arr2 = [2,1,4,3,9,6]
输出:[2,2,2,1,4,3,3,9,6,7,19]
提示:
抛砖引玉
/**
* @param {number[]} arr1
* @param {number[]} arr2
* @return {number[]}
*/
var relativeSortArray = function(arr1, arr2) {
let map = new Map(),
_result = [],
arr = [];
// 使用哈希记录arr1中每个元素的集合
for (let i = 0; i < arr1.length; i++) {
if (map.has(arr1[i])) {
map.get(arr1[i]).push(arr1[i])
} else {
map.set(arr1[i], [arr1[i]])
}
}
// 按照arr2元素顺序存放哈希arr对应的集合
for (let i = 0; i < arr2.length; i++) {
if (map.has(arr2[i])) {
_result = _result.concat(map.get(arr2[i]))
map.delete(arr2[i])
}
}
// 存放arr1中独有的元素
for (let [key, value] of map.entries()) {
arr = arr.concat(value)
}
arr.sort((a, b) => a - b)
return _result.concat(arr)
};