动态规划(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;
    }
}
相关推荐
ClaNNEd@19 分钟前
尚硅谷Java第 4、5 章IDEA,数组
java·算法
dokii120 分钟前
leetcode589 N叉树的前序遍历
算法
rigidwill66636 分钟前
LeetCode hot 100—子集
数据结构·c++·算法·leetcode·职场和发展
阳洞洞42 分钟前
leetcode 322. Coin Change
算法·leetcode·动态规划·完全背包问题
不要小瞧我啊八嘎o.0?1 小时前
图论整理复习
算法·深度优先·图论
明月看潮生1 小时前
青少年编程与数学 02-016 Python数据结构与算法 12课题、递归
python·算法·青少年编程·编程与数学
.格子衫.2 小时前
008二分答案+贪心判断——算法备赛
开发语言·c++·算法
Hi__2 小时前
[蓝桥杯 2023 省 A] 平方差
算法·蓝桥杯
小媛早点睡2 小时前
贪心算法 day08(加油站+单调递增的数字+坏了的计算机)
算法·贪心算法
weixin_457885822 小时前
DeepSeek的神经元革命:穿透搜索引擎算法的下一代内容基建
人工智能·算法·搜索引擎·deepseek·虎跃办公