leetcode 338. 比特位计数
2023.12.28

简单的动态规划问题。 首先明确:当前为奇数时,比特数 = 当前数除以2的比特数;当前数为偶数时,比特数 = 当前数-1的比特数加上一。
使用动态规划循序遍历即可,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;}
}