比特位计数--C++ bitset 用法
比特位计数
- 前言
- 一、示例
- 二、代码解析
- 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 用法相关推荐
- 《LeetCode力扣练习》第338题 比特位计数 Java
<LeetCode力扣练习>第338题 比特位计数 Java 一.资源 题目: 给你一个整数 n ,对于 0 <= i <= n 中的每个 i ,计算其二进制表示中 1 的个数 ...
- LeetCode每日一题:比特位计数(No.338)
题目:比特位计数 给定一个非负整数 num.对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回. 复制代码 示例: 输入: 2 输出: [0,1, ...
- Leetcode338. 比特位计数
Leetcode338. 比特位计数 题目: 给你一个整数 n ,对于 0 <= i <= n 中的每个 i ,计算其二进制表示中 1 的个数 ,返回一个长度为 n + 1 的数组 ans ...
- (LeetCode C++)比特位计数
给你一个整数 n ,对于 0 <= i <= n 中的每个 i ,计算其二进制表示中 1 的个数 ,返回一个长度为 n + 1 的数组 ans 作为答案. 示例 1: 输入:n = 2 输 ...
- leetcode--338. 比特位计数
给定一个非负整数 num.对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回. 示例 1: 输入: 2 输出: [0,1,1] 示例 2: 输入: ...
- leetcode 338. 比特位计数
给定一个非负整数 num.对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回. 示例 1: 输入: 2 输出: [0,1,1] 示例 2: 输入: ...
- 【LeetCode笔记】338. 比特位计数(Java、位运算、动态规划)
文章目录 题目描述 思路 & 代码 无注释二刷 题目描述 难点在于 O(n) 思路 & 代码 理解题意,分析出 O(n) 复杂度应该是要用到之前的值来得到当前值--动态规划 核心结论: ...
- leetcode 338 比特位计数
如果一个数i%2=1,即为奇数,即二进制中的最低位为1.我们将这个过程循环直至i为0,每一次i%2=1我们将该数的'1'数加一. 上面的方法不能做到复杂度O(n)完成所有数的的遍历.我们换成动态规划. ...
- Leetcode 338.比特位计数
Time: 20190904 Type: Medium 题目描述 给定一个非负整数 num.对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回. ...
最新文章
- 【面试 多线程】【第九篇】多线程的问题
- axios get请求_Axios使用指南
- Hdu 1312 Red and Black
- Android自定义弹窗模仿微信,Android仿微信右上角点击加号弹出PopupWindow
- 跟开涛学 SpringMVC
- 实例42:python
- 【面向对象】面向对象程序设计测试题6-Java中的对象交互强化测试题
- 百度网盘查看分享的文件
- 2020-09-02 微机原理与接口课程复习题
- ping 丢包 网络摄像头_Ping丢包故障案例
- Android 文件md5校验
- jacob将WORD转换成PDF文件(要装有Word另存为PDF文件的插件)
- armbian开启ssh_armbian笔记
- java qq聊天界面_【附源码】用Java写了一个类QQ界面聊天小项目,可在线聊天!...
- GPS定位基本原理浅析
- nginx正向代理解决跨域问题
- Mybatis-原理总结
- [JDK1.6] JAVA集合 ConcurrentHashMap源码浅析
- hough变换连接边缘matlab,matlab图像处理hough变换程序执行问题
- 免费注册 Redhat 开发者订阅和激活订阅