给你一个整数 n
,对于 0 <= i <= n
中的每个 i
,计算其二进制表示中 1
的个数 ,返回一个长度为 n + 1
的数组 ans
作为答案。
JAVA①:
class Solution {
public int[] countBits(int n) {
int[] res=new int[n+1];
if(n==0) return new int[]{0};
if(n==1) return new int[]{0,1};
res[0]=0;
res[1]=1;
for(int i=2;i<=n;i++){
res[i]=bin(i);
}
return res;
}
int bin(int n){
int ans=0;
for(int i=0;i<32;i++){
ans+=((n>>i)&1);
}
return ans;
}
}
JAVA②:
class Solution {
public int[] countBits(int n) {
int[] bits=new int[n+1];
for(int i=1;i<=n;i++){
bits[i]=bits[i&(i-1)]+1;
}
return bits;
}
}
JAVA③:
class Solution {
public int[] countBits(int n) {
int[] bits=new int[n+1];
bits[0]=0;
for(int i=1;i<=n;i++){
bits[i]=((i&1)==1?bits[i-1]+1:bits[i>>1]);
}
return bits;
}
}