LeetCode 338.比特位计数

各位朋友们,大家好啊,今天此题我用的方法比较好理解,但时间复杂度比较高如果大家觉得可以的话,不妨给个免费的赞吧,谢谢了^ _ ^

1.题目要求如图所示:

2.做题步骤:

1.先计算总共多少个数:

c 复制代码
    int count = 0;
    int number = 0;
    while(number <= n)
    {
        count++;
        number++;
    }

2.然后再用malloc函数:

c 复制代码
 int* number_t = (int*)malloc(sizeof(int) * count);

3.再采用双层while循环,再利按位与操作符和右移操作符来求每个数中1的个数:

c 复制代码
int k = count;
    number = 0;
    count = 0;
    int f = 0;
    while(number <= n)
    {
        int numbers = number;
        count = 0;
        while(numbers)
        {
            if(numbers & 1 == 1)
            {
                count++;
            }
            numbers =  numbers >> 1;
        }
        printf("%d ",count);
        number_t[f] = count;
        f++;
        number++;
    }

全部代码如图所示:

c 复制代码
/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* countBits(int n, int* returnSize) {
    int count = 0;
    int number = 0;
    while(number <= n)
    {
        count++;
        number++;
    }
    int* number_t = (int*)malloc(sizeof(int) * count);
    int k = count;
    number = 0;
    count = 0;
    int f = 0;
    while(number <= n)
    {
        int numbers = number;
        count = 0;
        while(numbers)
        {
            if(numbers & 1 == 1)
            {
                count++;
            }
            numbers =  numbers >> 1;
        }
        printf("%d ",count);
        number_t[f] = count;
        f++;
        number++;
    }
    *returnSize = k;
    return number_t;   
}

好了,这就是我全部的代码,大家如果觉得好的话,请给个免费的赞吧,谢谢了^ _ ^

相关推荐
稚南城才子,乌衣巷风流24 分钟前
ST 表(Sparse Table)算法详解:原理、实现与应用
算法
hold?fish:palm30 分钟前
9 找到字符串中所有字母异位词
c++·算法·leetcode
Sw1zzle1 小时前
算法入门(六):贪心算法 - 基础入门(Leetcode 121/455/860/376/738)
算法·leetcode·贪心算法
青山木1 小时前
Hot 100 --- 岛屿数量
java·数据结构·算法·leetcode·深度优先·广度优先
不会就选b1 小时前
算法日常・每日刷题--<归并排序>1
数据结构·算法
危桥带雨2 小时前
排序算法(快排、归并、计数、基数排序)
数据结构·算法·排序算法
啦啦啦啦啦zzzz2 小时前
算法:回溯算法
c++·算法·leetcode
IT探索2 小时前
Linux 查找文件指令总结
linux·算法
Lumos1863 小时前
51单片机从零到实战(完结)——后续学习路线建议
算法