
方法一 重写sort排序
按照二进制中1的数量排序,那么就要把每个数字的二进制形式中1的数目统计出来,
sort排序中两个参数a、b,return a-b就是按照数值大小排序,return countOnes(a)-countOnes(b)
就是按照二进制中1的数量来排序。
javascript
var sortByBits = function(arr) {
function countOnes(num) {
let count = 0; // 初始化为0
while (num !== 0) {
if ((num & 1) === 1) { // 判断最低位是否为1
count++; // 如果是则计数加1
}
num >>= 1; // 右移一位,相当于除2操作
}
return count;
}
arr.sort((a,b)=>{
let res=countOnes(a)-countOnes(b)
return res===0?a-b:res
})
return arr
};
消耗时间和内存情况:
