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;
    }
}
相关推荐
为什么要做囚徒2 分钟前
多线程基础系列-线程死锁
java·多线程
bluetata7 分钟前
在 Spring Boot 中使用 Amazon Textract 从图像中提取文本
java·spring boot·后端
keep_learning11116 分钟前
Z-Image模型架构全解析
人工智能·算法·计算机视觉·大模型·多模态
黎雁·泠崖16 分钟前
Java底层探秘入门:从源码到字节码!方法调用的中间形态全解析
java·开发语言
点云SLAM18 分钟前
Boost中Graph模块中boost::edge_capacity和boost::edge_capacity_t
数据库·算法·edge·图论·最大团·最大流算法·boost库使用
we1less22 分钟前
[audio] AudioTrack (六) 共享内存使用分析
java·开发语言
CYTElena23 分钟前
关于JAVA异常的笔记
java·开发语言·笔记·语言基础
YIN_尹24 分钟前
【C++11】lambda表达式(匿名函数)
java·c++·windows
猴子年华、25 分钟前
【每日一技】:SQL 常用函数实战速查表(函数 + 场景版)
java·数据库·sql·mysql
lihaihui199131 分钟前
asan 内存问题分析
算法