C++ LeeCode 比特位计数

Posted 小狐狸FM

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ LeeCode 比特位计数相关的知识,希望对你有一定的参考价值。

一、题目

原题链接

在这里插入图片描述

二、代码

十进制转二进制-百度百科

在这里插入图片描述

class Solution {
public:
    vector<int> countBits(int n) {
        vector<int> num;
        for(int i=0;i<=n;i++){//遍历[0,n],计算每个值对应二进制1的个数
            num.push_back(countOne(i));
        }
        return num;
    }
public:
    int countOne(int x){//计算当前十进制数转换为二进制后1的个数
        if (x==0) return 0;
        else if (x==1) return 1;
        else if(x/2>0&&x/2<1){//如果当前为最后的商时
            return 1;
        }else{
            return countOne(x/2) + x%2;
        }
    }
};

以上是关于C++ LeeCode 比特位计数的主要内容,如果未能解决你的问题,请参考以下文章

比特位计数--C++ bitset 用法

java刷题--338 比特位计数

java刷题--338 比特位计数

java刷题--338 比特位计数

比特位计数

简单动态规划的实现(Leetcode 338. 比特位计数)