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;
    }
}
相关推荐
ShineWinsu11 分钟前
对于 C++:C++14中从变量模板、泛型 Lambda 到并发与字面量的解析
c++·算法
CHANCE V20 分钟前
集合排序和流排序
java
土司大王33 分钟前
LeetCode hot100——合并两个有序链表
算法·leetcode·链表
码行山野赴时序归途36 分钟前
算法效率的度量(上):时间复杂度中的对数思维
c语言·数据结构·算法
16月6日-晴40 分钟前
Java面向对象进阶—多态
java·开发语言
算AI1 小时前
基于LLM的无人机仿真测试:新方法竞赛夺佳绩
人工智能·深度学习·算法·机器学习·ai
qq_185198692 小时前
SpringBoot-五-AOT
java·spring boot·后端
王大大的刀2 小时前
Spring AI 重试引起的 LLM 重复调用
java·人工智能
风流 少年2 小时前
hutool
java·服务器·开发语言
H_oRIZoN_2 小时前
Linux入门DAY27(文件IO(系统调用)详解|open/read/write/lseek)
java·linux·服务器