leetcode-day20-根据数字二进制下 1 的数目排序[1356]

image.png

思路: 先将数组排序,再讲数组转成二进制,然后二进制找出每个有多少个数字1,放入对象中,这步很重要,对象中用两个属性,一个属性放1的个数,一个放序号,再给数组对象排序,最后数组对象中的序号属性代表的值就是最终结果。

/**
 * @param {number[]} arr
 * @return {number[]}
 */
var sortByBits = function(arr) {
    if(arr.length === 0) return null;
    // 将数字转成二进制
    let twoStrArr = [], numArr = [], result = [];
    arr.sort((a, b) => {
        return a - b;
    })
    for(let i=0;i{
        return a.id - b.id;
    })
    numArr.map(item =>{
        result.push(item.order);
    })
    return result;
};

你可能感兴趣的:(leetcode-day20-根据数字二进制下 1 的数目排序[1356])