LeetCode--Counting Bits

思路1:

    1.通过移位判断每个位是否是1

    2.遍历所有的数字

class Solution {
    public int[] countBits(int num) {
        int[] res=new int[num+1];
        
        for(int i=0;i<=num;i++){
            res[i]=binaryToDecimal(i);
        }
        
        return res;
    }
    
    public int binaryToDecimal(int n){
        int res=0;
        
        for(int i = 31;i >= 0; i--){
            if((n>>>i & 1)==1){
                res++;
            }
        }
        
        return res;
    }
}

思路2:

    暂时还没搞懂,但是空间复杂度要比上面一个低

public int[] countBits(int num) {
    int[] f = new int[num + 1];
    for (int i=1; i<=num; i++) f[i] = f[i >> 1] + (i & 1);
    return f;
}

猜你喜欢

转载自blog.csdn.net/qq_21752135/article/details/80081601