LeetCode 338. Counting Bits
来源:互联网 发布:电脑声音增强软件 编辑:程序博客网 时间:2024/05/22 16:49
Description
Given a non negative integer number num. For every numbers i in the range 0 ≤ i ≤ num calculate the number of 1’s in their binary representation and return them as an array.
Example:
Fornum = 5
you should return[0,1,1,2,1,2]
.
Follow up:
- It is very easy to come up with a solution with run time O(n*sizeof(integer)). But can you do it in linear time O(n) /possibly in a single pass?
- Space complexity should be O(n).
- Can you do it like a boss? Do it without using any builtin function like __builtin_popcount in c++ or in any other language.
Solution
题目给一整数n,要求统计从0到n每个数的二进制写法中1的个数,然后存入一个一维数组中返回。写出0到15的数的二进制和1的个数如下:
0000 0------------- 0001 1------------- 0010 1 0011 2------------- 0100 1 0101 2 0110 2 0111 3------------- 1000 1 1001 2 1010 2 1011 3 1100 2 1101 3 1110 3 1111 4
除去前两个数字0个1,从2开始,2和3,是[21, 22)区间的,值为1和2。而4到7属于[22, 23)区间的,值为1,2,2,3,前半部分1和2和上一区间相同,2和3是上面的基础上每个数字加1。再看8到15,属于[23, 24)区间的,同样满足上述规律。
class Solution {public: vector<int> countBits(int num) { if (num == 0) return {0}; vector<int> res{0, 1}; int k = 2, i = 2; while (i <= num) { for (i = pow(2, k - 1); i < pow(2, k); ++i) { if (i > num) break; int t = (pow(2, k) - pow(2, k - 1)) / 2; if (i < pow(2, k - 1) + t) res.push_back(res[i - t]); else res.push_back(res[i - t] + 1); } ++k; } return res; }};
0 0
- [leetcode] 338. Counting Bits
- leetcode 338. Counting Bits
- [LeetCode]338. Counting Bits
- LeetCode#338. Counting Bits
- [LeetCode] 338. Counting Bits
- LeetCode 338. Counting Bits
- [LeetCode]338. Counting Bits
- LeetCode-338. Counting Bits
- LeetCode *** 338. Counting Bits
- (leetcode) 338. Counting Bits
- #leetcode#338. Counting Bits
- LeetCode 338. Counting Bits
- leetcode 338. Counting Bits
- LeetCode-338. Counting Bits
- LeetCode-338. Counting Bits
- leetcode-338. Counting Bits
- Leetcode 338. Counting Bits
- LeetCode 338. Counting Bits
- web 学习笔记4-BOM和JavaScript事件
- java.lang.NoClassDefFoundError: org/hibernate/cache/CacheProvider
- javaweb学习笔记(三)-xml解析初识及dom4j的基本应用
- 天梯赛 L1-030. 一帮一
- 下载
- LeetCode 338. Counting Bits
- Makefile(二)
- Number of 1 Bits
- 63. Unique Paths II
- extend crash command "net" and add a new command "flow"
- 黑盒测试用例设计
- 宅急送 项目第九天 JBPM 进阶
- java菜鸟的回炉之旅之十一----方法
- 算法导论 思考题 9-3