n
이 0이 될 때 까지 n &= (n-1)
으로 최하위 1을 제거해가며 1의 개수를 구한다.
class Solution {
public:
int count1s(int n) {
int cnt = 0;
while(n) {
n &= (n-1);
cnt++;
}
return cnt;
}
vector<int> countBits(int n) {
int i;
vector<int> ans;
for(i = 0; i <= n; i++) ans.push_back(count1s(i));
return ans;
}
};