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;
    }
}
相关推荐
俩娃妈教编程14 分钟前
2023 年 03 月 二级真题(1)--画三角形
c++·算法·双层循环
invicinble15 分钟前
关于学习技术栈的思考
java·开发语言·学习
niuniudengdeng20 分钟前
一种基于高维物理张量与XRF实景复刻的一步闭式解工业级3D打印品生成模型
人工智能·python·数学·算法·3d
哈库纳玛塔塔34 分钟前
公元前日期处理的两种方案
数据库·算法·mybatis
铸人36 分钟前
再论自然数全加和 - 欧拉伽马常数6
算法
json{shen:"jing"}1 小时前
分割回文串-暴力法
java·算法
没有bug.的程序员1 小时前
Maven 进阶进阶:依赖优化内核、多模块构建艺术与“依赖地狱”自愈指南
java·maven·构建·多模块·依赖优化
毕设源码-赖学姐1 小时前
【开题答辩全过程】以 基于Java的外卖点餐网站为例,包含答辩的问题和答案
java·开发语言
niuniudengdeng1 小时前
基于调度驱动与内存主动数据供给的非冯·诺依曼智能架构
算法
追随者永远是胜利者1 小时前
(LeetCode-Hot100)4. 寻找两个正序数组的中位数
java·算法·leetcode·职场和发展·go