[LeetCode338]Counting Bits
2016-09-13 07:27
239 查看
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
对从0到num的每一个数进行模2再除以2的运算,如果对2取模等于1,则1的个数加1,通过这种方法来计算这个数用二进制表示时1的个数,思路比较直接。虽然能够通过测试样例,但时间复杂度相对比较高,为O(nlogn)。希望自己能够找到时间复杂度更低的算法。
class Solution {
public:
vector<int> countBits(int num) {
vector<int> r;
r.push_back(0);
int count;
for(int i=1;i<=num;i++)
{
count=0;
int n=i;
while(n>0)
{
if(n%2==1)
{
count++;
}
n/=2;
}
r.push_back(count);
}
return r;
}
};
return them as an array.
Example:
For
num = 5you should return
[0,1,1,2,1,2].
对从0到num的每一个数进行模2再除以2的运算,如果对2取模等于1,则1的个数加1,通过这种方法来计算这个数用二进制表示时1的个数,思路比较直接。虽然能够通过测试样例,但时间复杂度相对比较高,为O(nlogn)。希望自己能够找到时间复杂度更低的算法。
class Solution {
public:
vector<int> countBits(int num) {
vector<int> r;
r.push_back(0);
int count;
for(int i=1;i<=num;i++)
{
count=0;
int n=i;
while(n>0)
{
if(n%2==1)
{
count++;
}
n/=2;
}
r.push_back(count);
}
return r;
}
};
相关文章推荐
- leetcode 179 Largest Number
- leetcode 24 Swap Nodes in Pairs
- leetcode 2 Add Two Numbers 方法1
- leetcode 2 Add Two Numbers 方法2
- leetcode----Longest Substring Without Repeating Characters
- [LeetCode]47 Permutations II
- [LeetCode]65 Valid Number
- [LeetCode]123 Best Time to Buy and Sell Stock III
- [LeetCode] String Reorder Distance Apart
- [LeetCode] Sliding Window Maximum
- [LeetCode] Find the k-th Smallest Element in the Union of Two Sorted Arrays
- [LeetCode] Determine If Two Rectangles Overlap
- [LeetCode] A Distance Maximizing Problem
- leetcode_linearList
- leetcode_linearList02
- 021-Merge Two Sorted Lists(合并两个排好序的单链表);leetcode
- LeetCode[Day 1] Two Sum 题解
- LeetCode[Day 2] Median of Two Sorted Arrays 题解
- LeetCode[Day 3] Longest Substring Without... 题解
- LeetCode [Day 4] Add Two Numbers 题解