Leetcode.338 比特位计数

时间:2021-11-15    作者:z    分类: 开发日记


题目详情

给你一个整数 n ,对于 0 <= i <= n 中的每个 i ,计算其二进制表示中 1 的个数 ,返回一个长度为 n + 1 的数组 ans 作为答案。

示例 1:

输入:n = 2

输出:[0,1,1]

解释:

0 --> 0

1 --> 1

2 --> 10


示例 2:

输入:n = 5

输出:[0,1,1,2,1,2]

解释:

0 --> 0

1 --> 1

2 --> 10

3 --> 11

4 --> 100

5 --> 101


思路

对给定的数字从0开始计算每个数字二进制中1的个数,存入数组。  二进制中1的个数



解题代码


class Solution {
    public int[] countBits(int n) {
        int[] result=new int[n+1];
        if(n==0){
            result[0]=0;
            return result;
        }
        for(int i=0;i<=n;i++){
            int a=i;
            int count=0;
            while(a!=0){
                a=((a-1)&a);
                count++;
            }
            result[i]=count;
            count=0;
        }
        return result;

    }
}


标签: 开发日记 算法