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;
    }
}
相关推荐
Remember_993几秒前
Spring 中 REST API 调用工具对比:RestTemplate vs OpenFeign
java·网络·后端·算法·spring·php
Y_03几秒前
浅谈Java虚拟机JVM
java·开发语言·jvm
我命由我123451 分钟前
JUnit - 自定义 Rule
android·java·开发语言·数据库·junit·java-ee·android-studio
源代码•宸1 分钟前
分布式理论基础——Raft算法
经验分享·分布式·后端·算法·golang·集群·raft
YiWait2 分钟前
机器学习导论习题解答
人工智能·python·算法
阿杰 AJie2 分钟前
使用Iterator迭代器在遍历中安全删除元素
java·spring
流㶡4 分钟前
scikit-learn之KNN算法实战鸢尾花分类
python·算法·scikit-learn·knn
螺旋小蜗8 分钟前
docker-compose文件属性(14)build
java·docker·eureka
多多*8 分钟前
程序设计工作室1月28日内部训练赛 题解
java·开发语言·windows·哈希算法·散列表
啊阿狸不会拉杆9 分钟前
《数字信号处理》第8章:有限长单位冲激响应(FIR)数字滤波器设计方法
算法·matlab·深度优先·信号处理·数字信号处理·dsp