每日一题——LeetCode1356.根据数字二进制下1的数目排序

方法一 重写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
};

消耗时间和内存情况:

相关推荐
咋吃都不胖lyh几秒前
Haversine 距离算法详解(零基础友好版)
线性代数·算法·机器学习
FPGA小c鸡5 分钟前
FPGA通信基带算法完全指南:从理论到实战的DSP加速方案
算法·fpga开发
boooooooom12 分钟前
手写简易Vue响应式:基于Proxy + effect的核心实现
javascript·vue.js
@Aurora.20 分钟前
优选算法【专题三:二分查找算法】
算法
soldierluo20 分钟前
向量与向量数据
人工智能·算法·机器学习
bug总结32 分钟前
uniapp+动态设置顶部导航栏使用详解
java·前端·javascript
晴殇i34 分钟前
深入理解MessageChannel:JS双向通信的高效解决方案
前端·javascript·程序员
a努力。36 分钟前
字节跳动Java面试被问:一致性哈希的虚拟节点和数据迁移
java·开发语言·分布式·算法·缓存·面试·哈希算法
kkkAloha39 分钟前
倒计时 | setInterval
前端·javascript·vue.js
VT.馒头44 分钟前
【力扣】2622. 有时间限制的缓存
javascript·算法·leetcode·缓存·typescript