【力扣】:比特位计数

1.去掉二进制中最左边的1,n&(n-1),如果一次操作以后,就是0,那么这个数是2的倍数。进行几次操作,,变为0,那么就有几个1.

2.拿到最左边的1,n&-n

3.将x位改为0,~(1<<x)&n

4,x位改为1,1<<x|n.

解法一:

复制代码
class Solution {
public:
    vector<int> countBits(int n) {
        vector<int> bits(n + 1);
        for (int i = 0; i <= n; i++) {
                int ones = 0;
                while (x > 0) {
                x &= (x - 1);
                ones++;
            }
            bits[i]=ones;
        }
        return bits;
    }
};

解法2:

动态规划

复制代码
class Solution {
    public int[] countBits(int n) {
        int[] bits = new int[n + 1];
        int highBit = 0;
        for (int i = 1; i <= n; i++) {
            if ((i & (i - 1)) == 0) {
                highBit = i;
            }
            bits[i] = bits[i - highBit] + 1;
        }
        return bits;
    }
}
相关推荐
苏州知芯传感5 分钟前
柔性抓取的“慧眼”:MEMS 3D视觉如何让机器人精准识别无序堆叠的复杂钣金件?
算法·3d·机器人·mems
iAkuya12 分钟前
(leetcode)力扣100 22相交链表(双指针)
算法·leetcode·链表
chao18984423 分钟前
基于MATLAB的ADI方法求解偏微分方程详解
开发语言·算法·matlab
智驱力人工智能27 分钟前
超越识别 将光学字符识别(OCR)技术转化为可靠业务能力的交付思维 光学字符识别 金融票据OCR识别系统 物流单据自动识别技术
人工智能·opencv·算法·目标检测·ocr·边缘计算
算法与编程之美38 分钟前
解决tensor的shape不为1,如何转移到CPU的问题
人工智能·python·深度学习·算法·机器学习
natide39 分钟前
词汇/表达差异-8-Token Overlap(词元重叠度)
大数据·人工智能·深度学习·算法·自然语言处理·nlp·知识图谱
hetao173383743 分钟前
2025-12-22 hetao1733837的笔记
c++·笔记·算法
Binky6781 小时前
力扣--贪心篇(1)
数据结构·算法·leetcode
sinat_255487811 小时前
文件I/O流
java·jvm·算法
北辰水墨1 小时前
【算法篇】单调栈的学习
c++·笔记·学习·算法·单调栈