要求:算1到n比特位1的和,且时间O(n)
思路:明显去掉低位1少一个1
class Solution {
public:
vector<int> countBits(int n) {
vector<int> dp(n+1);
for(int i=1;i<=n;++i){
dp[i]=dp[i&(i-1)]+1;
}
return dp;
}
};
要求:算1到n比特位1的和,且时间O(n)
思路:明显去掉低位1少一个1
class Solution {
public:
vector<int> countBits(int n) {
vector<int> dp(n+1);
for(int i=1;i<=n;++i){
dp[i]=dp[i&(i-1)]+1;
}
return dp;
}
};