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;
    }
}
相关推荐
raining_peidx几秒前
xxljob源码
java·开发语言
肥猪猪爸2 分钟前
双重检查锁(DCL)与 volatile 的关键作用
java·开发语言·单例模式
bubiyoushang8884 分钟前
MATLAB实现雷达恒虚警检测
数据结构·算法·matlab
wu_asia8 分钟前
编程技巧:如何高效输出特定倍数数列
c语言·数据结构·算法
yaoxin52112310 分钟前
289. Java Stream API - 从字符串的字符创建 Stream
java·开发语言
AlenTech16 分钟前
207. 课程表 - 力扣(LeetCode)
算法·leetcode·职场和发展
浮游本尊17 分钟前
Java学习第35天 - 分布式系统深入与大数据处理
java
2301_7806698627 分钟前
Set集合、HashSet集合的底层原理
java
你曾经是少年38 分钟前
Java 关键字
java
海南java第二人41 分钟前
SpringBoot启动流程深度解析:从入口到容器就绪的完整机制
java·开发语言