LCR003-比特位计数

求解代码

java 复制代码
public int[] countBits(int n) {
        int[] bits = new int[n+1];

        for(int i=0;i<=n;i++){
            bits[i]=oneBits(i);
        }
        return bits;
    }

    private int oneBits(int n){
        int count = 0;
        while(n>0){
            n&=(n-1);
            count++;
        }
        return count;
    }

小贴士

核心就是用 n & (n-1) 消去最右侧 1的技巧统计 1 的个数。

相关推荐
mldong1 小时前
一个 App,十三套后端:手机审批端 uni-jeeflow-app 开源了
java·架构
tqs_123452 小时前
MySQL RR隔离级别死锁|Gap间隙锁、临键锁,订单并发范围查询死锁根因方案
java
逆境不可逃3 小时前
Pi Agent 学习笔记:多个工具怎样并行执行
java
浪子明X3 小时前
十六位账本怎样发现传输差错:Internet Checksum 生活类比
开发语言
Flynt3 小时前
Java 27 升级实测:默认值动得比新特性多,有个老参数会让 JVM 直接起不来
java·jvm·后端
Bs_MoneyMagnet3 小时前
基于springboot+vue的个人健康管理系统的设计与实现 源码+文档
java·vue.js·spring boot·后端·vue3·springboot3·计算机毕业设计
星云API技术支持4 小时前
企业微信二次开发:群权限设置、成员管理与群资料维护的接口组合实践
java·前端·企业微信
niucloud-admin4 小时前
JAVA V6 多商户商城 开发文档——job 计划任务开发
java·python·github
海宇AI5 小时前
零信任架构实战:基于海宇柠檬查出险-登记证构建自动化车抵贷核保网关
java·人工智能·架构·自动化
xiangyun615 小时前
【408数据结构 08】队列:循环队列判空判满,408年年考,一次讲清
c语言·开发语言·数据结构·c++·算法