码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 比特位的计算


    给你一个整数 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进行判断,再从这基础上进行奇数偶数判断。

    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. int* countBits(int n, int* returnSize)
    4. {
    5. int *ans = malloc(sizeof(int)*(n+1));//开辟一个空间,长度为n+1
    6. if(n == 0)
    7. {
    8. *returnSize = 1;//当n=0时,返回长度为1,数组第一个元素为0
    9. ans[0] = 0;
    10. return ans;
    11. }
    12. if(n == 1)
    13. {
    14. *returnSize = 2;//当n=1时,返回长度为2,数组第一个元素为0,第二个元素为1
    15. ans[0] = 0;
    16. ans[1] = 1;
    17. return ans;
    18. }
    19. ans[0] = 0;
    20. ans[1] = 1;//从两种基础的情况上开始判断
    21. for(int i = 2;i <= n ;i++)//循环判断奇数偶数
    22. {
    23. if(i % 2 == 0)
    24. {
    25. ans[i] = ans[i/2];
    26. /*当i为偶数时,ans[i]中1的个数=和ans[i/2]中个数相等,因为两个二进制数i/2相加,所产生1的进位与i/2中1的个数相等*/
    27. }else{
    28. ans[i] = ans[i - 1] + 1;//当i为奇数时,所包含的1的个数为前一个偶数中1的个数+1
    29. }
    30. }
    31. *returnSize = n+1;
    32. return ans;
    33. }
    34. int main()
    35. {
    36. int n = 10;
    37. int returnSize = 0;
    38. int* nums = countBits(n, &returnSize);
    39. printf("returnSize = %d\n",returnSize);
    40. for(int i = 0;i < returnSize;i++)
    41. {
    42. printf("nums[%d] = %d\n",i,nums[i]);
    43. }
    44. free(nums);
    45. nums = NULL;
    46. return 0;
    47. }

  • 相关阅读:
    un7.29:Linux——centos7防火墙开放端口及常用命令。
    【MultiOTP】Docker安裝MultiOTP, 让Windows登入更安全(MFA)
    java之Collection接口详解说明
    ssm毕设项目学生社团管理系统jcjyw(java+VUE+Mybatis+Maven+Mysql+sprnig)
    财报解读:将低价作为“唯一性基础武器”的京东,效果在慢慢显现
    MYSQL入门与进阶(四)
    物联网开发笔记(33)- 使用Micropython开发ESP32开发板之手机扫二维码远程控制开关灯(3)
    张高兴的 .NET IoT 入门指南:(八)基于 GPS 的 NTP 时间同步服务器
    2022年全球市场香兰素总体规模、主要生产商、主要地区、产品和应用细分研究报告
    简单代码,随机点名器
  • 原文地址:https://blog.csdn.net/weixin_55937953/article/details/141287707
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号