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;
    }
}
相关推荐
毕设源码-赖学姐13 分钟前
【开题答辩全过程】以 高校社团管理平台为例,包含答辩的问题和答案
java
IT猿手14 分钟前
六种智能优化算法(NOA、MA、PSO、GA、ZOA、SWO)求解23个基准测试函数(含参考文献及MATLAB代码)
开发语言·算法·matlab·无人机·无人机路径规划·最新多目标优化算法
We་ct19 分钟前
LeetCode 151. 反转字符串中的单词:两种解法深度剖析
前端·算法·leetcode·typescript
芜湖xin34 分钟前
【题解-Acwing】AcWing 5579. 增加模数(TLE)
算法·快速幂
余瑜鱼鱼鱼43 分钟前
线程和进程的区别和联系
java·开发语言·jvm
小唐同学爱学习43 分钟前
如何解决海量数据存储
java·数据库·spring boot·mysql
962464i1 小时前
SBE(simple-binary-encoding)-Demo
java
清酒难咽1 小时前
算法案例之分治法
c++·经验分享·算法
-凌凌漆-1 小时前
【Java】java中throws与try catch区别
java
wen__xvn1 小时前
代码随想录算法训练营DAY25第七章 回溯算法 part04
算法·leetcode·深度优先