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 的个数。

相关推荐
谢亮_vipxieliang几秒前
PHP 8 新特性:构造器属性提升与实战
开发语言·后端·php
imDwAaY3 分钟前
Spring Boot的核心配置文件一览及其加载顺序
java·spring boot·后端
zhangx1234_5 分钟前
javaEE 多线程1
java·linux·服务器
鬼手点金10 分钟前
opencode-crawl4ai使用建议
java·开发语言·人工智能·python·机器学习
专业程序开发源24 分钟前
springboot校园志愿者管理系统28562-计算机课程设计、毕业设计
java·spring boot·后端·python·django·php·课程设计
thefool11226628 分钟前
多线程 2
java
谢亮_vipxieliang29 分钟前
Go select 多路复用:从语法到实战的完整指南
开发语言·后端·golang
daidaidaiyu10 小时前
ThingsBoard 集群的核心逻辑源码分析
java
2601_9628857210 小时前
如何用 Python 自动识别股票的支撑位与压力位?
开发语言·python
爱吃奥利奥_wen11 小时前
面向对象三板斧:封装、继承、多态,到底在“装“什么、“承“什么、“变“什么?
开发语言·经验分享·c#