剑指 Offer II 075. 数组相对排序

92 阅读1分钟

剑指 Offer II 075. 数组相对排序

注意题目如下

image.png

代码实现 将arr1合并,key为值,value为key出现的次数 按照arr2的顺序,将arr1中折叠部分展开, 由于数据的值存在数组下标中,因此没用的数据其实已经排序好了,直接按照第二步生成的下标,继续展开即可

var relativeSortArray = function (arr1, arr2) {
    var count = [];
    for (var num of arr1) {
        if (count[num]) {
            count[num]++
        } else {
            count[num] = 1
        }
    }
    var index = 0;
    for (var num of arr2) {
        while (count[num]--) {
            arr1[index++] = num;
        }
    }
    for (var i = 0; i < count.length; i++) {
        while (count[i]-- > 0) {
            arr1[index++] = i;
        }
    }
    return arr1;
};

调试代码

var arr1 = [2,3,1,3,2,4,6,7,9,2,19,19], arr2 = [2,1,4,3,9,6]
console.log(relativeSortArray(arr1,arr2));

image.png image.png