LeetCode——Counting Bits
Question
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.
Credits:
Special thanks to @ syedee for adding this problem and creating all test cases.
Solution
动态规划,这里要应用求一个整数,对应二进制数中1的个数的方法,i & (i - 1),也就是将i的最右边的1置为0.
那么每个整数中1的个数,就等于不包含最右边1以后1的个数再加1。 ret[i] = ret[i & (i - 1)] + 1.
Code
class Solution {
public:
    vector<int> countBits(int num) {
        vector<int> table(num + 1, 0);
        for (int i = 1; i <= num; i++) {
            table[i] = table[i & (i - 1)] + 1;
        }
        return table;
    }
};
LeetCode——Counting Bits的更多相关文章
- LeetCode Counting Bits
		原题链接在这里:https://leetcode.com/problems/counting-bits/ 题目: Given a non negative integer number num. Fo ... 
- [LeetCode] Counting Bits 计数位
		Given a non negative integer number num. For every numbers i in the range 0 ≤ i ≤ num calculate the ... 
- Leetcode之动态规划(DP)专题-338. 比特位计数(Counting Bits)
		Leetcode之动态规划(DP)专题-338. 比特位计数(Counting Bits) 给定一个非负整数 num.对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数 ... 
- 【LeetCode】338. Counting Bits (2 solutions)
		Counting Bits Given a non negative integer number num. For every numbers i in the range 0 ≤ i ≤ num ... 
- LN : leetcode 338 Counting Bits
		lc 338 Counting Bits 338 Counting Bits Given a non negative integer number num. For every numbers i ... 
- 2016.5.16——leetcode:Reverse Bits(超详细讲解)
		leetcode:Reverse Bits 本题目收获 移位(<< >>), 或(|),与(&)计算的妙用 题目: Reverse bits of a given 3 ... 
- Week 8 - 338.Counting Bits & 413. Arithmetic Slices
		338.Counting Bits - Medium Given a non negative integer number num. For every numbers i in the range ... 
- leetcode 上的Counting Bits  总结
		最近准备刷 leetcode 做到了一个关于位运算的题记下方法 int cunt = 0; while(temp) { temp = temp&(temp - 1); //把二进制最左边那 ... 
- leetcode 338. Counting Bits,剑指offer二进制中1的个数
		leetcode是求当前所有数的二进制中1的个数,剑指offer上是求某一个数二进制中1的个数 https://www.cnblogs.com/grandyang/p/5294255.html 第三种 ... 
随机推荐
- 小程序 wx.navigateTo传值总结
			wx.navigateTo(Object object) 保留当前页面,跳转到应用内的某个页面.但是不能跳到 tabbar 页面.使用 wx.navigateBack 可以返回到原页面.小程序中页面栈 ... 
- 剑指Offer——复杂链表的复制
			题目描述: 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head.(注意,输出结果中请不要返回参数中的节点引用, ... 
- POJ1470Closest Common Ancestors 最近公共祖先LCA 的 离线算法 Tarjan
			该算法的详细解释请戳: http://www.cnblogs.com/Findxiaoxun/p/3428516.html #include<cstdio> #include<alg ... 
- python中yield使用
			16.yield使用 列表推导与生成器表达式 当我们创建了一个列表的时候,就创建了一个可以迭代的对象: >>> squares=[n*n for n in range(3)] ... 
- 前端基础之BOM和DOM和三个小示例(计时器、搜索框、select联动)
			一.BOM和DOM JavaScript分为 ECMAScript,DOM,BOM. BOM(Browser Object Model)是指浏览器对象模型,它使 JavaScript 有能力与浏览器进 ... 
- ReferenceQueue
			@Test public void strongReference() { Object referent = new Object(); /** * 通过赋值创建 StrongReference * ... 
- Keras学习-1
			本文基于http://keras-cn.readthedocs.io/en/latest/for_beginners/concepts/提及的知识总结,感谢作者做出的贡献,如有侵权将立即删除 符号计算 ... 
- linux中执行定时任务对oracle备份(crontab命令)
			执行定时任务对oracle表数据备份: 1.创建sh脚本 [oracle@localhost ~]$ vi bak.sh 2.添加脚本内容 #!/bin/bash #:本脚本自动备份7天的数据库,每次 ... 
- mysql 下的命令
			1.查看mysql日志vim /var/log/mysqld.log 
- kettle添加hadoop cluster时报错Caused by: java.lang.IllegalArgumentException: Does not contain a valid host:port authority: hadoop:password@node56:9000
			完整报错是: Caused by: java.lang.IllegalArgumentException: Does not contain a valid host:port authority: ... 
