每日一题 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;
    }
};
相关推荐
loser~曹13 分钟前
基于快速排序解决 leetcode hot215 查找数组中第k大的数字
数据结构·算法·leetcode
Dream it possible!19 分钟前
LeetCode 热题 100_打家劫舍(83_198_中等_C++)(动态规划)
c++·算法·leetcode·动态规划
SylviaW0828 分钟前
python-leetcode 62.搜索插入位置
数据结构·算法·leetcode
Joe_Wang52 小时前
[图论]拓扑排序
数据结构·c++·算法·leetcode·图论·拓扑排序
梭七y3 小时前
【力扣hot100题】(033)合并K个升序链表
算法·leetcode·链表
月亮被咬碎成星星3 小时前
LeetCode[383]赎金信
算法·leetcode
trust Tomorrow5 小时前
每日一题-力扣-2278. 字母在字符串中的百分比 0331
算法·leetcode
梭七y10 小时前
【力扣hot100题】(022)反转链表
算法·leetcode·链表
LuckyLay16 小时前
LeetCode算法题(Go语言实现)_22
算法·leetcode·golang
Stardep21 小时前
算法学习11——滑动窗口——最大连续1的个数
数据结构·c++·学习·算法·leetcode·动态规划·牛客网