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;
    }
}
相关推荐
学代码的真由酱几秒前
WebSocket背景知识及简单实现-Java
java·websocket
IronMurphy3 分钟前
【算法五十四】72. 编辑距离
算法
QiLinkOS6 分钟前
【用呼吸重构创造价值关系——QiLink生态】
c语言·数据结构·c++·人工智能·单片机·嵌入式硬件·算法
lld9510279 分钟前
(一)云回测:量化策略上线前的必经之路
java·服务器·数据库
云云只是个程序马喽16 分钟前
海外短剧系统开发_云微传媒:多语言短剧平台定制与变现解决方案
java·php
妄想出头的工业炼药师16 分钟前
暗光长走廊特殊场景视觉解决方案
算法·开源
weixin_4684668521 分钟前
图像处理特征提取新手实战指南
图像处理·人工智能·算法·ai·机器视觉·特征提取
weixin_4684668522 分钟前
图像处理之形态学处理新手实战指南
图像处理·人工智能·算法·ai·机器视觉·形态学
plainGeekDev28 分钟前
RecyclerView.Adapter → ListAdapter
java·kotlin·gradle
J2虾虾39 分钟前
Spring AI Alibaba - 人工介入(Human-in-the-Loop)
java·人工智能·spring