VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > temp > JavaScript教程 >
  • 1122. 数组的相对排序 利用Map集合和数组排序

1122. 数组的相对排序 利用Map集合和数组排序

查看原题  https://leetcode-cn.com/problems/relative-sort-array/

解题思路

  1. 先将数组arr1映射到map对象中,用数组的值为键,数组每个值得个数为值
  2. 遍历arr2将map中的元素全部取出,顺序排列,注意要

 
for(let i = 0;i<map.get(item);i++){
 
result.push(item);
 
}

将每一项都取出,防止遗漏重复项,取出一项后记得删除 3. 再次遍历map取出arr1特有的元素,进行排序再push到大数组中返回

代码


 
/**
 
* @param {number[]} arr1
 
* @param {number[]} arr2
 
* @return {number[]}
 
*/
 
var relativeSortArray = function(arr1, arr2) {
 
// 将arr1映射到Map集合中值为元素的个数
 
const map = new Map();
 
arr1.forEach(item=>{
 
if(map.has(item)){
 
map.set(item,map.get(item)+1);
 
}else{
 
map.set(item,1);
 
}
 
});
 
let result =[];
 
//遍历数组arr2按顺序将map中的值push到result中
 
arr2.forEach(item=>{
 
for(let i = 0;i<map.get(item);i++){
 
result.push(item);
 
}
 
map.delete(item);
 
});
 
let other = [];
 
for (const [key,value] of map){
 
for(let i = 0;i<value;i++){
 
other.push(key);
 
}
 
}
 
result.push(...other.sort((a,b)=>a-b)) ;
 
return result;
 
};
 
 
 
出处:https://www.cnblogs.com/xyq135/p/15724188.html


相关教程