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;
    }
}
相关推荐
爱吃山竹的大肚肚9 分钟前
文件上传大小超过服务器限制
java·数据库·spring boot·mysql·spring
黄昏恋慕黎明9 分钟前
测试模型讲解
java
瑞雪兆丰年兮11 分钟前
[从0开始学Java|第十二天]学生管理系统升级
java·开发语言
弹简特12 分钟前
【JavaSE-网络部分03】网络原理-泛泛介绍各个层次
java·开发语言·网络
执风挽^12 分钟前
Python_func_basic
开发语言·python·算法·visual studio code
周杰伦的稻香12 分钟前
Hexo搭建教程
java·node.js
倔强的石头10612 分钟前
飞算JavaAI如何提升重塑Java开发体验
java·飞算javaai·ai开发工具
努力d小白15 分钟前
leetcode438.找到字符串中所有字母异位词
java·javascript·算法
短剑重铸之日16 分钟前
《设计模式》第九篇:三大类型之结构型模式
java·后端·设计模式·组合模式·代理模式·结构性模式
tangchao340勤奋的老年?16 分钟前
ADS通信 C++ 设置通知方式读取指定变量
开发语言·c++·算法