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;
    }
}
相关推荐
_codemonster几秒前
计算机视觉入门到实战系列(九) SIFT算法(尺度空间、极值点判断)
深度学习·算法·计算机视觉
行百里er2 分钟前
代码跑得慢?让Spring的StopWatch告诉你真相!
java·后端·github
又是忙碌的一天7 分钟前
SpringMVC响应
java·服务器·数据库
梭七y8 分钟前
【力扣hot100题】(133)LRU缓存
leetcode·缓存·哈希算法
万物皆字节16 分钟前
Spring Cloud Gateway 启动流程源码分析
java·开发语言·spring boot
W001hhh17 分钟前
260110
java·数据库
stillaliveQEJ24 分钟前
【JavaEE】Spring IoC(一)
java·spring·java-ee
a程序小傲34 分钟前
得物Java面试被问:方法句柄(MethodHandle)与反射的性能对比和底层区别
java·开发语言·spring boot·后端·python·面试·职场和发展
sinat_2869451934 分钟前
AI Coding LSP
人工智能·算法·prompt·transformer
酒书37 分钟前
对接阿里云号码认证实现运营商一键登录
java·阿里云