每日一题 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;
    }
};
相关推荐
To_OC4 小时前
LC 17 电话号码的字母组合:我的回溯算法,就是从这道题开窍的
javascript·算法·leetcode
海石11 小时前
【JS击败90%】前缀和+定长滑动窗口
算法·leetcode
Tisfy12 小时前
LeetCode 2685.统计完全连通分量的数量:DFS求每个连通块的边点数
算法·leetcode·深度优先··题解·连通图·全连通分量
海石12 小时前
1次遍历,空间复杂度击败100%,时间复杂度击败85%
算法·leetcode
lueluelue4712 小时前
LeetCode:滑动窗口
数据结构·算法·leetcode
青山木14 小时前
Hot 100 --- 二叉树与递归
java·数据结构·算法·leetcode·深度优先
tachibana217 小时前
hot100 将有序数组转换为二叉搜索树(108)
java·数据结构·算法·leetcode
退休倒计时17 小时前
【每日一题】LeetCode 78. 子集 TypeScript
算法·leetcode·typescript
旖-旎17 小时前
《LeetCode 978 最长湍流子数组 || LeetCode 139 单词拆分》
c++·算法·leetcode·动态规划
lueluelue4718 小时前
LeetCode:单调栈
算法·leetcode