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;
    }
}
相关推荐
数据大魔方2 分钟前
【期货量化入门】期权交易入门:从零开始学期权量化(TqSdk完整教程)
数据库·python·mysql·算法·区块链·程序员创富
期货资管源码9 分钟前
期货资管分仓软件开发/平台搭建经验分享
经验分享·算法·eclipse·区块链
独自破碎E22 分钟前
PO、VO、BO、DTO、DAO、POJO有什么区别?
java
czlczl2002092523 分钟前
从 SSO 登录到跨系统资源访问:OAuth2 全链路交互详解
java·spring boot·后端·spring·架构
Xの哲學24 分钟前
Linux 实时调度机制深度解析
linux·服务器·网络·算法·边缘计算
fie888925 分钟前
基于蚁群算法求解带时间窗的车辆路径问题
数据库·人工智能·算法
茶本无香26 分钟前
单例模式深度解析:饿汉式与懒汉式的实现与选择
java·单例模式
爬山算法30 分钟前
Hibernate(29)什么是Hibernate的连接池?
java·后端·hibernate
ytttr87332 分钟前
基于人工蜂群算法(ABC)的MATLAB数值计算求解框架
开发语言·算法·matlab