每日一题 338. 比特位计数

338. 比特位计数

难点是发现规律

cpp 复制代码
class Solution {
public:
    vector<int> countBits(int n) {
        
        vector<int> dp(n+1,0);
        if(n <=0)
        {
            return dp;
        }
        dp[1] = 1;
        if(n == 1)
        {
            return dp;
        }
        int bin = 0;
        for(int i=2;i<=n;++i)
        {
            int base = getBinary(i);
            dp[i] = dp[i-(1<<base)] + 1; 
        }
        return dp;
    }

    int getBinary(int num)
    {
        int ret = 0;
        while( num != 0)
        {
            num  = num >> 1;
            ++ret;
        }
        return ret-1;
    }
};
相关推荐
俏布斯3 小时前
算法日常记录
java·算法·leetcode
脑子慢且灵4 小时前
蓝桥杯冲刺:一维前缀和
算法·leetcode·职场和发展·蓝桥杯·动态规划·一维前缀和
ゞ 正在缓冲99%…5 小时前
leetcode22.括号生成
java·算法·leetcode·回溯
SylviaW085 小时前
python-leetcode 63.搜索二维矩阵
python·leetcode·矩阵
小卡皮巴拉5 小时前
【力扣刷题实战】矩阵区域和
开发语言·c++·算法·leetcode·前缀和·矩阵
小王努力学编程7 小时前
动态规划学习——回文子串系列问题【C++】
c++·学习·算法·leetcode·动态规划
JohnFF7 小时前
48. 旋转图像
数据结构·算法·leetcode
ゞ 正在缓冲99%…8 小时前
leetcode152.乘积最大子数组
数据结构·算法·leetcode
mit6.82410 小时前
[Lc6_记忆化搜索] 最长递增子序列 | 矩阵中的最长递增路径
c++·算法·leetcode
Y1nhl11 小时前
搜广推校招面经六十四
人工智能·深度学习·leetcode·广告算法·推荐算法·搜索算法