[leetcode] 338. Counting Bits 解题报告
来源:互联网 发布:大连软件交易会 编辑:程序博客网 时间:2024/05/19 16:23
题目链接: https://leetcode.com/problems/counting-bits/
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.
思路: 主要考察二进制数性质的, 即如果A/2 = B, 那么A比B多了一位, 并且A和B出了A的二进制的右边的一位以外其他都一样, 举个栗子A = 11, 二进制就是1011, B = 5, 二进制是101, 所以我们可以看出其最左边是相等的, 只有A的最后一位不等.
那么我们可以得出一个结论, 如果A/2 = B, 那么A有多少个1取决于B有多少个1和A最右边一位二进制数是0还是1. 如果A最右边一位是1, 那么A比B多一个1, 否则他们具有相等的1.
代码如下:
class Solution {public: vector<int> countBits(int num) { vector<int> vec(num+1, 0); for(int i =1; i <= num; i++) vec[i] = vec[i/2] + i%2; return vec; }};
0 0
- [leetcode] 338. Counting Bits 解题报告
- LeetCode 338.Counting Bits 解题报告
- LeetCode解题报告 338. Counting Bits [medium]
- leetcode解题报告:338. Counting Bits
- [Leetcode] 338. Counting Bits 解题报告
- 【LeetCode】Counting Bits 解题报告
- Counting Bits解题报告
- LeetCode---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
- 三角形问题
- ORACLE 11G 之DATAGUARD搭建物理standby
- 【蓝桥杯】【基础练习14】【阶乘计算】
- linux iptables ip_conntrack: table full CentOS 7 iptables
- 代码整洁之道
- [leetcode] 338. Counting Bits 解题报告
- 人生应该要有一个能时刻激励你努力奋斗的人
- Hibernate单向多对一关联
- 圆有点挤 真的有点挤
- Hadoop2,NameNode format 源码分析
- 【Redis源码剖析】 - Redis数据类型之redisObject
- HTTP/2 新特性浅析
- Android多屏适配
- bzoj1875 HH去散步