比特位的计算

news2024/11/16 17:30:55

给你一个整数 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

思路:先将两个基本的数1和0进行判断,再从这基础上进行奇数偶数判断。

#include <stdio.h>
#include <stdlib.h>


int* countBits(int n, int* returnSize)
{
    int *ans = malloc(sizeof(int)*(n+1));//开辟一个空间,长度为n+1
    if(n == 0)
    {
        *returnSize = 1;//当n=0时,返回长度为1,数组第一个元素为0
        ans[0] = 0;
        return ans;
    }
    if(n == 1)
    {
        *returnSize = 2;//当n=1时,返回长度为2,数组第一个元素为0,第二个元素为1
        ans[0] = 0;
        ans[1] = 1;
        return ans;
    }
    ans[0] = 0;
    ans[1] = 1;//从两种基础的情况上开始判断
    for(int i = 2;i <= n ;i++)//循环判断奇数偶数
    {
        if(i % 2 == 0)
        {
            ans[i] = ans[i/2];
/*当i为偶数时,ans[i]中1的个数=和ans[i/2]中个数相等,因为两个二进制数i/2相加,所产生1的进位与i/2中1的个数相等*/
        }else{
            ans[i] = ans[i - 1] + 1;//当i为奇数时,所包含的1的个数为前一个偶数中1的个数+1
        }
    }
    *returnSize = n+1;
    return ans;
}

int main()
{
    int n = 10;
    int returnSize = 0;
    int* nums = countBits(n, &returnSize);
    printf("returnSize = %d\n",returnSize);
    for(int i = 0;i < returnSize;i++)
    {
        printf("nums[%d] = %d\n",i,nums[i]);
    }
    free(nums);
    nums = NULL;
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2049783.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

我的创作纪念日【2048】

机缘 2048&#xff0c;是计算机二进制世界里很奇妙的数字&#xff0c;在CSDN上创作的第六年&#xff0c;记录从事本行业的知识学习与总结&#xff0c;好记性不如烂笔头&#xff0c;或许写的东西不如大佬的文章&#xff0c;那么有深度&#xff0c;但自己也是在坚持&#xff0c;…

计算机毕业设计选什么题目好?Java财会信息管理系统

✍✍计算机毕业编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java、…

Ciallo~(∠・ω・ )⌒☆第二十篇 入门mysql 数据库

要入门MySQL数据库&#xff0c;首先需要了解数据库的基本概念和原理。MySQL是一种广泛使用的开源关系型数据库管理系统&#xff0c;它能够处理大量的数据&#xff0c;并提供了多种功能。 一、创建数据库 连接到MySQL后&#xff0c;你可以使用SQL语句来创建数据库。例如&#x…

leetcode第141题:环形链表(C语言+引申问题全解)

解题思路&#xff1a; 定义一对快慢指针&#xff0c;slow指针每次走一步&#xff0c;fast指针每次走两步。当快指针入环时&#xff0c;慢指针只走了一半。 当slow指针入环时&#xff0c;fast指针已经在环内走了许多步。让他们两个继续走&#xff0c;直到相遇&#xff0c;可以证…

矩阵中的最大得分(Lc3148)——动态规划

给你一个由 正整数 组成、大小为 m x n 的矩阵 grid。你可以从矩阵中的任一单元格移动到另一个位于正下方或正右侧的任意单元格&#xff08;不必相邻&#xff09;。从值为 c1 的单元格移动到值为 c2 的单元格的得分为 c2 - c1 。 你可以从 任一 单元格开始&#xff0c;并且必须…

STM32G0系列配置Freertos所管理的最高中断优先级

最近在G070上部署Freertos&#xff0c;用cubemx生成的时候发现无法选择freertos所能管理的最高优先级和最低优先级&#xff0c;即configMAX_SYSCALL_INTERRUPT_PRIORITY和LIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY。我们可以发现在F103RCT6上是可以选择这两个优先级限制的&#…

树莓派开发笔记01-树莓派的系统烧录以及初次开机配置

github主页&#xff1a;https://github.com/snqx-lqh gitee主页&#xff1a;https://gitee.com/snqx-lqh 本项目github地址&#xff1a;https://github.com/snqx-lqh/RaspberryPiLearningNotes 本项目gitee地址&#xff1a;https://gitee.com/snqx-lqh/RaspberryPiLearningNote…

详解golang内存管理

介绍 要搞明白 Go 语言的内存管理,就必须先理解操作系统以及机器硬件是如何管理内存的。因为 Go 语言的内部机制是建立在这个基础之上的,它的设计,本质上就是尽可能的会发挥操作系统层面的优势,而避开导致低效情况。 操作系统内存管理 其实现在计算机内存管理的方式都是…

Python---容器

文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 一.容器概念 在Python中&#xff0c;容器是指可以存放多个元素的对象。常见的容器类型有列表&#xff08;List&#xff09;、元组&#xff08;Tuple&#xff09;、集合&#xff08;Set&#xf…

solidwork经验总结2

新建<装配体 打开之后可以直接从文件夹将零件中拖入&#xff0c;也可以 怎样装配在一起&#xff1f; 点击配合。 假如我要把轴承装到这个孔里面来 首先&#xff0c;它们一定得是共线 然后点击这两个圆 产生同轴心 选择重合&#xff0c;可以两个贴紧 上面这个也可以按照需求…

ECEF地心地固坐标系与ENU站心坐标系互转

ENU站心坐标系 站心坐标系也叫做站点坐标系、东-北-天坐标系ENU&#xff0c;英文名称是local Cartesian coordinates coordinate system&#xff0c;主要是用于需了解以观察者为中心的其他物体运动规律。 站心直角坐标系 定义&#xff1a;以站心&#xff08;如GPS接收天线中…

植物生长时为什么会扭动?科学家解开令查尔斯·达尔文困惑的千古之谜

在一项新的研究中&#xff0c;来自美国和以色列的物理学家可能已经弄清了植物生长过程中的一种古怪行为–也是查尔斯-达尔文本人在其生命的最后几十年里所好奇的一个谜&#xff1a;对于许多人类来说&#xff0c;植物可能看起来静止不动&#xff0c;甚至有点无趣。但实际上&…

小米5c解除BL锁刷机root

版权归作者所有&#xff0c;如有转发&#xff0c;请注明文章出处&#xff1a;https://cyrus-studio.github.io/blog/ 解锁BL锁 1. 下载安装 miflash_unlock&#xff1a;https://miuiver.com/miunlock/&#xff0c;登录小米账号&#xff08;需要和解锁设备绑定的账号一致&#…

Java Web —— 第六天(Mybatis)

lombok Lombok是一个实用的Java类库&#xff0c;能通过注解的形式自动生成构造器、getter/setter、equals、hashcode、toString等方法&#xff0c;并可以自动化生成日志变量&#xff0c;简化java开发、提高效率 在pom.xml文件中引入依赖 <!--lombok--><dependency>…

Spring IoCDI(中)--IoC的进步

通过上文的讲解和学习, 我们已经知道了Spring IoC 和DI的基本操作, 接下来我们来系统的学习Spring IoC和DI 的操作. 前⾯我们提到IoC控制反转&#xff0c;就是将对象的控制权交给Spring的IOC容器&#xff0c;由IOC容器创建及管理对 象&#xff0c;也就是bean的存储。 1. Bean的…

Datawhale AI 夏令营第四期 大模型技术-微调 task3 数据增强与评分

前面我们介绍了baseline的思路及写作方案&#xff0c;这里我们尝试对数据做增强&#xff0c;但是需要聪明的你加入自己的努力完成更好的思路。 今天需要大家学习上手尝试数据增强&#xff0c;不过我会把增强的思路和相关知识告诉大家&#xff0c;让大家学习如何使用llm完成数据…

Ugandan Knuckles

目录 一、题目 二、思路 三、payload 四、思考与总结 一、题目 <!-- Challenge --> <div id"uganda"></div> <script>let wey (new URL(location).searchParams.get(wey) || "do you know da wey?");wey wey.replace(/[<…

铁电存储器(FM24W256)I2C读写驱动(4):I2C读写测试

0 参考资料 FM24W256&#xff08;Cypress公司生产&#xff09;数据手册 1 I2C读写测试 1.1 简单测试方法 使用前面我们设计好的读写驱动&#xff0c;向FM24W256起始地址为0xF0存储区域写入16字节数据“ABCDEFGHIJK12345”&#xff0c;断电后再读取出来&#xff0c;查看读写是…

MySQL基础练习题48-连续出现的数字

目录 题目 准备数据 分析数据 题目 找出所有至少连续出现三次的数字。 准备数据 ## 创建库 create database db; use db;## 创建表 Create table If Not Exists Logs (id int, num int)## 向表中插入数据 Truncate table Logs insert into Logs (id, num) values (1, 1) i…

Autodesk Maya 2019 for Mac/Win:专业三维动画制作软件的巅峰之作

Autodesk Maya 2019是一款世界顶级的三维动画制作软件&#xff0c;专为Mac和Windows系统打造&#xff0c;广泛应用于影视广告、角色动画、电影特技等专业领域。其强大的功能和灵活的工具集&#xff0c;使得用户能够高效地完成复杂的三维建模、动画设计、特效制作及高质量渲染等…