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;
    }
}
相关推荐
moiumxf0278q18 小时前
C++中智能指针是如何工作的?
java·jvm·c++
尼古拉斯·纯情暖男·天真·阿玮19 小时前
泛型与数据结构
java·数据结构
wefg119 小时前
【数据结构】unordered 系列容器底层结构和封装
数据结构·算法·哈希算法
从零点19 小时前
插补算法(逐点比较法)+PWM配置操作
算法
DARLING Zero two♡19 小时前
【优选算法】LinkedList-Concatenate:链表的算法之契
数据结构·c++·算法·链表
半旧夜夏19 小时前
【Gateway】服务调用和网关配置攻略
java·spring boot·spring cloud·gateway
Moonbit19 小时前
MoonBit Pearls Vol.14:哈希表避坑指南
后端·算法·编程语言
yue00820 小时前
C# 求取整数的阶乘
java·开发语言·c#
可观测性用观测云20 小时前
JAVA Heap Dump 采集最佳实践
java