当前位置 博文首页 > 小狐狸FM的博客:C++ LeeCode 比特位计数

    小狐狸FM的博客:C++ LeeCode 比特位计数

    作者:[db:作者] 时间:2021-07-18 22:15

    一、题目

    原题链接

    在这里插入图片描述

    二、代码

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

    在这里插入图片描述

    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;
            }
        }
    };
    
    cs
    下一篇:没有了