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;
    }
}
相关推荐
资深web全栈开发6 分钟前
贪心算法套路解析
算法·贪心算法·golang
武子康6 分钟前
Java-170 Neo4j 事务、索引与约束实战:语法、并发陷阱与速修清单
java·开发语言·数据库·sql·nosql·neo4j·索引
~~李木子~~8 分钟前
贪心算法实验2
算法·贪心算法
q***235710 分钟前
在2023idea中如何创建SpringBoot
java·spring boot·后端
FanXing_zl15 分钟前
快速掌握线性代数:核心概念与深度解析
线性代数·算法·机器学习
7澄128 分钟前
Java 实战:投票统计系统(HashMap 应用)
java·开发语言·intellij-idea·交互·控制台·hashmap
zzzsde29 分钟前
【C++】红黑树:使用及实现
开发语言·c++·算法
q***787829 分钟前
SpringBoot后端服务重定向
java·spring boot·后端
Fantasydg42 分钟前
外卖项目day02
java