每日一题 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;
    }
};
相关推荐
?abc!16 小时前
(数组)581. 最短无序连续子数组
数据结构·算法·leetcode
hold?fish:palm19 小时前
40 二叉树的直径
c++·leetcode
guo_wen_qiang20 小时前
二叉树的层序遍历-使用双端队列Deque
算法·leetcode·1024程序员节
爱读书的小胖20 小时前
LeetCode 55 跳跃游戏 C 语言解题分析
c语言·数据结构·算法·leetcode·1024程序员节
Navigator_Z1 天前
LeetCode //C - 1300. Sum of Mutated Array Closest to Target
c语言·算法·leetcode
凯瑟琳.奥古斯特1 天前
力扣1016高效解法:剪枝优化技巧
开发语言·c++·算法·leetcode·职场和发展
qz_Serene1 天前
练习算法题:双指针 -cpp
c++·算法·leetcode·1024程序员节
Nuanyt1 天前
Hot 100 刷题笔记 · 数组与哈希专题(3 题)
java·笔记·算法·leetcode·哈希算法·1024程序员节
爱读书的小胖1 天前
LeetCode 274 H 指数 C 语言解题分析
c语言·算法·leetcode·1024程序员节
如何原谅奋力过但无声1 天前
【LeetCode hot100】代码随想录未cover部分
数据结构·算法·leetcode