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;
    }
}
相关推荐
刀法如飞19 小时前
开箱即用的 DDD(领域驱动设计)工程脚手架,基于 Spring Boot 4.0.1 和 Java 21
java·spring boot·mysql·spring·设计模式·intellij-idea
我是苏苏19 小时前
Web开发:C#通过ProcessStartInfo动态调用执行Python脚本
java·服务器·前端
JavaGuide19 小时前
SpringBoot 官宣停止维护 3.2.x~3.4.x!
java·后端
tkevinjd20 小时前
动态代理
java
Knight_AL20 小时前
Spring 事务管理:为什么内部方法调用事务不生效以及如何解决
java·后端·spring
清木铎20 小时前
leetcode_day4_筑基期_《绝境求生》
算法
清木铎20 小时前
leetcode_day10_筑基期_《绝境求生》
算法
j_jiajia21 小时前
(一)人工智能算法之监督学习——KNN
人工智能·学习·算法
4***172721 小时前
Spring Boot中Tomcat配置
java
源代码•宸21 小时前
Golang语法进阶(协程池、反射)
开发语言·经验分享·后端·算法·golang·反射·协程池