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;   
}

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

相关推荐
HW-BASE4 小时前
《C语言》指针练习题--1
c语言·开发语言·单片机·算法·c
泽虞5 小时前
数据结构与算法
c语言·数据结构·算法
max5006006 小时前
深度学习的视觉惯性里程计(VIO)算法优化实践
人工智能·深度学习·算法
岁忧6 小时前
(nice!!!)(LeetCode 每日一题) 3363. 最多可收集的水果数目 (深度优先搜索dfs)
java·c++·算法·leetcode·go·深度优先
shenghaide_jiahu8 小时前
数学建模——粒子群算法
算法·数学建模
无规则ai8 小时前
动手学深度学习(pytorch版):第一章节——引言
人工智能·pytorch·深度学习·算法·机器学习
WeiJingYu.9 小时前
机器学习——随机森林
算法·随机森林·机器学习
丶小鱼丶10 小时前
二叉树算法之【中序遍历】
java·算法
快去睡觉~11 小时前
力扣238:除自身之外数组的乘积
数据结构·算法·leetcode
小马爱打代码12 小时前
算法 - 贪心算法
算法·贪心算法