算法练习(24):Counting Bits
来源:互联网 发布:培训交互设计师知乎 编辑:程序博客网 时间:2024/05/01 16:06
题意:输入一个数,然后找出小于等于它的每个非负整数的二进制形式的1的个数,用vector依次存下来返回
分析与思路:这道题,我是先列出很多个数以及它的1个数来找规律的,因为这种题若要求O(n)则肯定是找数字规律的,列出的数字如下:
如上所示,除开0和1,每一个2的幂之间都有规律,【2^k,2^(k+1))的前半部分是和【2^(k-1),2^k)一样的,而后半部分则为【2^(k-1),2^k)的对应项加一。所以很容易可以得出思路。
代码:
class Solution {public:vector<int> countBits(int num) {if (num == 0) return vector<int> {0};vector<int> re{ 0,1 };int k = 1,i = 2;while (i <= num) {for (i = pow(2, k); i < pow(2, k + 1); i++) {if (i <= num) {if (i < (pow(2, k + 1) - pow(2, k)) / 2 + pow(2, k)) {re.push_back(re[i - (pow(2, k + 1) - pow(2, k)) / 2]);}//前半部分else {re.push_back(re[i - (pow(2, k + 1) - pow(2, k)) / 2]+1);}//后半部分}else break;}k++;}return re;}};
阅读全文
0 0
- 算法练习(24):Counting Bits
- leetcode338:Counting Bits(medium)
- leetcode之counting bits改进算法
- leetcode算法题总结之Counting Bits
- 【leetcode】经典算法题-Counting Bits
- 【算法作业13】LeetCode 338. Counting Bits
- 算法课第十三周作业 | Counting Bits
- Leetcode算法学习日志-338 Counting Bits
- Counting Bits
- Counting Bits
- Counting Bits
- Counting Bits
- Counting Bits
- Counting Bits
- Counting Bits
- Counting Bits
- Counting Bits
- Counting Bits
- 菜鸟学习历程【10】机器字节序、大小端的判断与修改
- JAVA | 10
- 图的广度搜索(C语言版)
- Tensorflow学习(3)参数初始化
- 十三:表达式if ... else
- 算法练习(24):Counting Bits
- java 金额计算不能用float、doube!!!!必须用BigDecimal
- 第一道BFS
- SDUT-oj 时间日期格式转换(详解)
- 排序算法(五) 简单选择排序
- 配置NODE_HOME
- MapReduce原理
- java面试题jvm字节码的加载与卸载
- phpMyAdmin配置文件config.inc.php正确配置