比特位计数

  • 前言
  • 一、示例
  • 二、代码解析
    • 1.比特位计数
    • 2.测试代码
    • 3.结果
  • 三、C++ bitset 用法
    • 1.构造函数
    • 2.一些函数
    • 3.结果
  • 总结

前言

给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。


一、示例

示例 1:

输入: 2
输出: [0,1,1]
示例 2:

输入: 5
输出: [0,1,1,2,1,2]

二、代码解析

1.比特位计数

代码如下(示例):

vector<int> countBits(int num)
{vector<int> arr;for (int i = 0; i <= num; i++){int index = bitset<32>(i).count();//计算二进制数中有多少个1arr.push_back(index);}return arr;
}

2.测试代码

代码如下(示例):

#include<vector>
#include<bitset>
#include <iostream>
using namespace std;vector<int> countBits(int num)
{vector<int> arr;for (int i = 0; i <= num; i++){int index = bitset<32>(i).count();//计算二进制数中有多少个1arr.push_back(index);}return arr;
}int main()
{vector<int> nums = countBits(5);for (int i = 0; i < nums.size(); i++){cout << nums[i] << " ";}
}

3.结果

三、C++ bitset 用法

C++的 bitset 在 bitset 头文件中,它是一种类似数组的结构,它的每一个元素只能是0或1,每个元素仅用1 bit空间。

1.构造函数

bitset常用构造函数有四种,如下

    bitset<4> bitset1;  //无参构造,长度为4,默认每一位为0bitset<8> bitset2(12);  //长度为8,二进制保存,前面用0补充string str = "100101";bitset<10> bitset3(str);  //长度为10,前面用0补充char str2[] = "10101";bitset<13> bitset4(str2);  //长度为13,前面用0补充cout << bitset1 << endl;  //0000cout << bitset2 << endl;  //00001100cout << bitset3 << endl;  //0000100101cout << bitset4 << endl;  //0000000010101

2.一些函数

int main()
{cout << bitset<8>(5) << endl;cout << bitset<8>(5).count() << endl; //2(count函数用来求bitset中1的位数,共有2个1)cout << bitset<8>(5).size() << endl;  //8(size函数用来求bitset的大小,一共有8位)cout << bitset<8>(5).test(0) << endl;   //true  (test函数用来查下标处的元素是0还是1,并返回false或true,此处[0]为1,返回true)cout << bitset<8>(5).test(1) << endl; //false  (同理,[1]为0,返回false)cout << bitset<8>(5).any() << endl;        //true  (any函数检查bitset中是否有1)cout << bitset<8>(5).none() << endl; //false  (none函数检查bitset中是否没有1)cout << bitset<8>(5).all() << endl;       //false  (all函数检查bitset中是全部为1)
}

3.结果


总结

比特位计数--C++ bitset 用法相关推荐

  1. 《LeetCode力扣练习》第338题 比特位计数 Java

    <LeetCode力扣练习>第338题 比特位计数 Java 一.资源 题目: 给你一个整数 n ,对于 0 <= i <= n 中的每个 i ,计算其二进制表示中 1 的个数 ...

  2. LeetCode每日一题:比特位计数(No.338)

    题目:比特位计数 给定一个非负整数 num.对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回. 复制代码 示例: 输入: 2 输出: [0,1, ...

  3. Leetcode338. 比特位计数

    Leetcode338. 比特位计数 题目: 给你一个整数 n ,对于 0 <= i <= n 中的每个 i ,计算其二进制表示中 1 的个数 ,返回一个长度为 n + 1 的数组 ans ...

  4. (LeetCode C++)比特位计数

    给你一个整数 n ,对于 0 <= i <= n 中的每个 i ,计算其二进制表示中 1 的个数 ,返回一个长度为 n + 1 的数组 ans 作为答案. 示例 1: 输入:n = 2 输 ...

  5. leetcode--338. 比特位计数

    给定一个非负整数 num.对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回. 示例 1: 输入: 2 输出: [0,1,1] 示例 2: 输入: ...

  6. leetcode 338. 比特位计数

    给定一个非负整数 num.对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回. 示例 1: 输入: 2 输出: [0,1,1] 示例 2: 输入: ...

  7. 【LeetCode笔记】338. 比特位计数(Java、位运算、动态规划)

    文章目录 题目描述 思路 & 代码 无注释二刷 题目描述 难点在于 O(n) 思路 & 代码 理解题意,分析出 O(n) 复杂度应该是要用到之前的值来得到当前值--动态规划 核心结论: ...

  8. leetcode 338 比特位计数

    如果一个数i%2=1,即为奇数,即二进制中的最低位为1.我们将这个过程循环直至i为0,每一次i%2=1我们将该数的'1'数加一. 上面的方法不能做到复杂度O(n)完成所有数的的遍历.我们换成动态规划. ...

  9. Leetcode 338.比特位计数

    Time: 20190904 Type: Medium 题目描述 给定一个非负整数 num.对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回. ...

最新文章

  1. 【面试 多线程】【第九篇】多线程的问题
  2. axios get请求_Axios使用指南
  3. Hdu 1312 Red and Black
  4. Android自定义弹窗模仿微信,Android仿微信右上角点击加号弹出PopupWindow
  5. 跟开涛学 SpringMVC
  6. 实例42:python
  7. 【面向对象】面向对象程序设计测试题6-Java中的对象交互强化测试题
  8. 百度网盘查看分享的文件
  9. 2020-09-02 微机原理与接口课程复习题
  10. ping 丢包 网络摄像头_Ping丢包故障案例
  11. Android 文件md5校验
  12. jacob将WORD转换成PDF文件(要装有Word另存为PDF文件的插件)
  13. armbian开启ssh_armbian笔记
  14. java qq聊天界面_【附源码】用Java写了一个类QQ界面聊天小项目,可在线聊天!...
  15. GPS定位基本原理浅析
  16. nginx正向代理解决跨域问题
  17. Mybatis-原理总结
  18. [JDK1.6] JAVA集合 ConcurrentHashMap源码浅析
  19. hough变换连接边缘matlab,matlab图像处理hough变换程序执行问题
  20. 免费注册 Redhat 开发者订阅和激活订阅

热门文章

  1. oracle mysql排序分页,Oracle、Mysql分页 排序
  2. TOPSIS法(优劣距离法)
  3. 教你如何训练和提高自己的情商
  4. 武大94年博士年薪201万入职华为!学霸日程表曝光,简直降维打击!
  5. 微信的移动生态闭环是怎么回事
  6. pycaret的具体使用流程
  7. Ylmf OS 4.0最新公开测试版发布
  8. python 使用 selenium 爬取中国福利彩票双色球历史中奖号码
  9. DOS下读取4GB内存——梁肇新代码分析
  10. xp补丁导致 vs2008 出现 尝试读取或写入受保护的内存。这通常指示其他内存已损坏 的解决办法