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;
    }
}
相关推荐
快乐肚皮24 分钟前
堆排序详解:从理论到实践
java·算法·排序算法·堆排序
hqxstudying28 分钟前
Kafka
java·spring cloud·kafka
悟能不能悟31 分钟前
Logback-spring.xml 配置屏蔽特定路径的日志
xml·java·spring
小伍_Five1 小时前
spark数据处理练习题番外篇【下】
java·大数据·spark·scala
qqxhb1 小时前
零基础设计模式——行为型模式 - 中介者模式
java·设计模式·go·中介者模式
forestsea1 小时前
Maven 多仓库治理与发布策略深度实践
java·maven
陌殇殇1 小时前
Hadoop 003 — JAVA操作MapReduce入门案例
java·hadoop·mapreduce
march of Time1 小时前
图数据库介绍及应用,go和Java使用图数据库
java·数据库·golang
CodeCraft Studio1 小时前
PDF处理控件Aspose.PDF教程: 在 Java 中编辑 PDF 页面大小
java·pdf·aspose·aspose.pdf
异常君1 小时前
Redis String 类型的底层实现与性能优化
java·redis·性能优化