var relativeSortArray = function(arr1, arr2) {
let obj1 = {};
let obj2 = {};
let needstoSort = [];
let ans = [];

for(let val of arr2){
    obj2[val] = obj2[val] ? obj2[val] + 1 : 1;
}

for(let val of arr1){
    obj1[val] = obj1[val] ? obj1[val] + 1 : 1;
    if(!obj2[val]){
        needstoSort.push(val);
    }
}


for(let val of arr2){
    if(obj2[val] && !ans.includes(val)){
        for(let i=0; i<obj1[val]; i++){
            ans.push(val);
        }
    }
}

needstoSort.sort((a,b) => a-b);

return [...ans, ...needstoSort];

};

Comments (0)