leetcode 338. 比特位计数

2023.12.28

简单的动态规划问题。 首先明确:当前为奇数时,比特数 = 当前数除以2的比特数;当前数为偶数时,比特数 = 当前数-1的比特数加上一

使用动态规划循序遍历即可,java代码如下:

java 复制代码
class Solution {
    public int[] countBits(int n) {
        if(n == 0) return new int[] {0};

        int[] dp = new int[n+1];
        dp[0] = 0;
        dp[1] = 1;
        for(int i=2; i<=n; i++){
            //偶数
            if(i % 2 == 0){
                dp[i] = dp[i/2];
            }
            //奇数
            else{
                dp[i] = dp[i-1] + 1;
            }
        }
        return dp;
    }
}
相关推荐
怎么比啊都是大神几秒前
Java构造器
java
8***Z891 分钟前
修改表字段属性,SQL总结
java·数据库·sql
大工mike2 分钟前
代码随想录算法训练营第三十三天 | 322. 零钱兑换 279.完全平方数 139.单词拆分
算法
liulilittle5 分钟前
C++ 17 字符串填充函数(PaddingLeft、PaddingRight)填充左侧、右侧。
c++·算法
AuroraWanderll5 分钟前
深入理解C++多态(三):多态的原理——虚函数表机制(上)
c语言·开发语言·数据结构·c++·算法·stl
mit6.8246 分钟前
预统计
算法
C***u1768 分钟前
Spring Boot 实战篇(四):实现用户登录与注册功能
java·spring boot·后端
码界奇点11 分钟前
Java大数据在智能教育个性化学习资源推荐中的冷启动解决方案
java·大数据·学习·动画·推荐算法
safestar201214 分钟前
Elasticsearch分片设计:从数据分布失衡到集群稳定性实战
java·es
数智化架构师-Aloong17 分钟前
⚡️ PowerJob深度解析:Java生态下高并发分布式调度的终极选择
java·开发语言·分布式·系统架构