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;
    }
}
相关推荐
不会c嘎嘎9 分钟前
算法百练,直击OFFER -- day5
c++·算法
倚肆24 分钟前
Spring Boot CORS 配置详解:CorsConfigurationSource 全面指南
java·spring boot·后端
q***721927 分钟前
Spring Boot(快速上手)
java·spring boot·后端
Aileen_0v035 分钟前
【Gemini3.0的国内use教程】
android·人工智能·算法·开源·mariadb
CoderYanger37 分钟前
C.滑动窗口——1423. 可获得的最大点数
java·开发语言·算法·leetcode·1024程序员节
乌萨奇也要立志学C++42 分钟前
【洛谷】二分查找专题 告别二分死循环!模板 + 细节 + 实战
c++·算法
Swift社区42 分钟前
StackOverflowError 栈溢出的原因与实战解决方案
java·spring boot·spring
Rock_yzh1 小时前
LeetCode算法刷题——128. 最长连续序列
数据结构·c++·算法·哈希算法
WolfGang0073211 小时前
代码随想录算法训练营Day32 | 518.零钱兑换II、377. 组合总和 Ⅳ、70. 爬楼梯(进阶)
算法
字节拾光录1 小时前
手机号存储避坑指南:从20亿级数据库实践看,为什么VARCHAR才是终极答案
java·数据库·oracle