动态规划(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;
    }
}
相关推荐
hrrrrb8 小时前
【算法设计与分析】贪心算法
算法·贪心算法·代理模式
TracyCoder1238 小时前
LeetCode Hot100(10/100)—— 53. 最大子数组和
算法·leetcode
Σίσυφος19009 小时前
霍夫变换vs LS vs RANSAC 拟合直线 MATLAB实现
算法·计算机视觉·matlab
假女吖☌9 小时前
限流算法-redis实现与java实现
java·redis·算法
蒟蒻的贤9 小时前
两数之和。
算法
wen__xvn9 小时前
代码随想录算法训练营DAY27第八章 贪心算法 part01
算法·贪心算法
We་ct10 小时前
LeetCode 125. 验证回文串:双指针解法全解析与优化
前端·算法·leetcode·typescript
客卿12310 小时前
力扣20-有效括号(多家面试题)
算法·leetcode·职场和发展
木井巳10 小时前
【递归算法】快速幂解决 pow(x,n)
java·算法·leetcode·深度优先
Maỿbe10 小时前
重走力扣hot的矩阵
算法·leetcode·矩阵