当前位置: 首页 > news >正文

比特位的计算

给你一个整数 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+1if(n == 0){*returnSize = 1;//当n=0时,返回长度为1,数组第一个元素为0ans[0] = 0;return ans;}if(n == 1){*returnSize = 2;//当n=1时,返回长度为2,数组第一个元素为0,第二个元素为1ans[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.lryc.cn/news/426548.html

相关文章:

  • SQLAlchemy 学习笔记
  • Linux内核分析(调度类和调度实体)
  • 用输入输出流(I/O)流,递归复制和删除多级文件
  • kafka监控工具EFAK
  • Page与自定义Components生命周期
  • Chain of Thought (CoT) 系列论文:大模型思维链,提升 LLM 的推理能力
  • 已解决:java.net.BindException: 地址已在使用
  • 看书标记【数据科学:R语言实战 8】
  • STM32标准库学习笔记-1.基础知识
  • Nginx:高效HTTP服务器与反向代理
  • vue3二次封装element-puls
  • 在CentOS 7上安装Apache Tomcat 8的方法
  • 深入理解分布式事务中的三阶段提交(3PC),什么是3PC,3PC原理是怎样?3PC的优化?
  • 这款新的 AI 工具会消灭 ChatGPT 吗?
  • 谷粒商城实战笔记-214~219-商城业务-认证服务-验证码防刷校验
  • 在华为服务器的openEuler系统中适配Pytorch调用NPU
  • MVCC工作原理深入解析
  • 使用html+css+js实现完整的登录注册页面
  • 2024年8月16日(运维自动化 ansible)
  • 荣耀Magicbook x14 扩容1TB固态
  • Springboot整合全文检索引擎Lucene
  • 【深度学习】【语音】TTS, 如何使用Python分析WAV的采样率、比特深度、通道数
  • Linux的安装和使用
  • 查看一个exe\dll文件的依赖项
  • 高校科研信息管理系统pf
  • Linux 开机自动挂载共享文件设置
  • c_cpp_properties.json、launch.json、 tasks.json
  • mysql 一些知识点 面试用
  • STM32之点亮LED灯
  • Java 多线程练习2 (抽奖比较Runnable写法)