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;
    }
}
相关推荐
core5121 分钟前
PageRank 算法:互联网的“人气投票”
算法·pagerank
小白菜又菜5 分钟前
Leetcode 1523. Count Odd Numbers in an Interval Range
算法·leetcode
悟能不能悟19 分钟前
JAVA 对象转为二级制流,再转化为base64
java·开发语言
潲爺26 分钟前
Java-IO笔记
java·笔记·学习
JH307328 分钟前
静态资源映射相关问题解答
java
爬山算法30 分钟前
Hibernate(6) Hibernate支持哪些数据库?
java·数据库·hibernate
你们补药再卷啦33 分钟前
人工智能算法概览
人工智能·算法
cnxy18838 分钟前
围棋对弈Python程序开发完整指南:步骤3 - 气(Liberties)的计算算法设计
python·算法·深度优先
爱吃牛肉的大老虎40 分钟前
Spring WebFlux与SpringMVC 对比讲解
java·后端·spring
AndrewHZ1 小时前
【图像处理基石】什么是光栅化?
图像处理·人工智能·算法·计算机视觉·3d·图形渲染·光栅化