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;
    }
}
相关推荐
阿昭L33 分钟前
堆结构与堆排序
数据结构·算法
2***574235 分钟前
人工智能在智能投顾中的算法
人工智能·算法
D***776536 分钟前
适用于IntelliJ IDEA 2024.1.2部署Tomcat的完整方法,以及笔者踩的坑,避免高血压,保姆级教程
java·tomcat·intellij-idea
20岁30年经验的码农39 分钟前
Spring Security 6.x 安全实践指南
java
草莓熊Lotso40 分钟前
《算法闯关指南:动态规划算法--斐波拉契数列模型》--01.第N个泰波拉契数,02.三步问题
开发语言·c++·经验分享·笔记·其他·算法·动态规划
胖咕噜的稞达鸭2 小时前
自定义shell命令行解释器自制
java·开发语言
2501_941805312 小时前
智慧零售平台中的多语言语法引擎与实时推荐系统实践
leetcode
q***33375 小时前
oracle 12c查看执行过的sql及当前正在执行的sql
java·sql·oracle
mit6.8247 小时前
bfs|栈
算法
Y***h1878 小时前
第二章 Spring中的Bean
java·后端·spring