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 分钟前
C++ 6 :string类:高效处理字符串的秘密
c语言·开发语言·数据结构·c++·笔记·算法·排序算法
蓝色汪洋10 分钟前
luogu迷宫寻路
算法
悟能不能悟16 分钟前
java 设置日期返回格式的几种方式
java·开发语言
爱笑的眼睛1118 分钟前
深入解析PyTorch nn模块:超越基础模型构建的高级技巧与实践
java·人工智能·python·ai
Smile_25422041820 分钟前
解决本地 Windows 开发机无法注册到 PowerJob 服务器的问题
java·tcp/ip
float_六七22 分钟前
Spring AOP连接点实战解析
java·后端·spring
while(1){yan}38 分钟前
基于IO流的三个小程序
java·开发语言·青少年编程
木头左38 分钟前
自适应门限动态调整算法在量化交易策略中的应用
算法
deepdata_cn39 分钟前
非线性规划(NLP)算法
算法
TL滕1 小时前
从0开始学算法——第十五天(滑动窗口)
笔记·学习·算法