LeetCode 338. Counting Bits
来源:互联网 发布:js判断是否离开页面 编辑:程序博客网 时间:2024/06/03 14:50
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:
For num = 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.
Analysis
找规律递推,效率较高的规律是,一个数字的中1
的个数,必然是将其最低的那个1去掉后再加1。
看起来有点像废话,但通过这句话我们就找到了递推关系式。
Code
class Solution {public: vector<int> countBits(int num) { vector<int> result(num + 1); result[0] = 0; result[1] = 1; for (int i = 2; i <= num; i++) result[i] = result[i & (i-1)] + 1; return result; }};
Appendix
- Link: https://leetcode.com/problems/counting-bits/
- Run Time: 66ms
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
- QT信号槽
- 剑指Offer的斐波那契数列的循环解决方案
- Jmeter 接口测试 -学习笔记
- Myeclipse 中运行selenium java代码配置
- curl
- LeetCode 338. Counting Bits
- Navicat for mysql 9.0.15注册码
- android:windowSoftInputMode属性详解
- 高并发Java 五 JDK并发包1
- 看得见的安全才放心
- admob 接入
- 用swiper 实现tabs切换并且实现他tabs底下内容自适应
- Ubuntu下构建BeagleBone Black的Eclipse开发环境
- 架构漫谈(九):理清技术、业务和架构的关系