动态规划(5)---Leetcode338.比特位计数

题目

给你一个整数 n ,对于 0 <= i <= n 中的每个 i ,计算其二进制表示中 1 的个数 ,返回一个长度为 n + 1 的数组 ans 作为答案。

分析

通常动态规划的做题顺序,先确定dp数组dp[i],然后确定确定递推公式,再dp数组初始化,最后确定递推顺序。

题解

java 复制代码
class Solution {
    public int[] countBits(int n) {
        int[] bits = new int[n + 1];
        int highBit = 0;
        for (int i = 1; i <= n; i++) {
            if ((i & (i - 1)) == 0) {
                highBit = i;
            }
            bits[i] = bits[i - highBit] + 1;
        }
        return bits;
    }
}
相关推荐
逻辑驱动的ken1 分钟前
Java高频面试考点14
开发语言·数据库·算法·哈希算法
故事还在继续吗5 分钟前
C++17关键特性
开发语言·c++·算法
Rabitebla8 分钟前
【数据结构】消失的数字+ 轮转数组:踩坑详解
c语言·数据结构·c++·算法·leetcode
菜菜的顾清寒10 分钟前
力扣100(20)旋转图像
算法·leetcode·职场和发展
Navigator_Z10 分钟前
LeetCode //C - 1025. Divisor Game
c语言·算法·leetcode
深念Y10 分钟前
王者荣耀与英雄联盟数值设计对比:穿透、乘算与加算、增伤乘算更厉害,减伤加算更厉害
数学·算法·游戏·建模·游戏策划·moba·数值
budingxiaomoli18 分钟前
优选算法-多源bfs解决拓扑排序问题
算法·宽度优先
隔壁大炮18 分钟前
10.PyTorch_元素类型转换
人工智能·pytorch·深度学习·算法
The Chosen One98519 分钟前
算法题目分享(二分算法)
算法·职场和发展·蓝桥杯
玛丽莲茼蒿22 分钟前
Leetcode hot100 矩阵置零【中等】
算法·leetcode·矩阵