给以 非负 整数 num. 对所有满足 0 ≤ i ≤ num 条件的数字 i 均需要计算其二进制表示 1 的个数并以数组的形式返回
样例
给出 num = 5 你需要返回 [0,1,1,2,1,2].
挑战
时间复杂度为 O(n * sizeof(integer))的解法很容易想到, 但是你是否可以用线性的时间复杂度 O(n)/可能只遍历一遍吗, 空间复杂度应为 O(n).
你能霸气的完成这项挑战吗? 不借助任何内嵌的函数, 比如C++ 中的__builtin_popcount 亦或是任何其他语言中的方法
解题思路:
非常简单。
public class Solution {
/**
* @param num: a non negative integer number
* @return: an array represent the number of 1's in their binary
*/
public int[] countBits(int num) {
// write your code here
int[] res = new int[num+1];
for(int i=0; i<=num; i++)
res[i] = Integer.bitCount(i);
return res;
}
}
本文介绍了一种计算从0到给定非负整数范围内所有数字二进制表示中1的个数的方法。通过遍历每个数字并使用内置函数计算1的数量,最终返回一个包含所有结果的数组。
431

被折叠的 条评论
为什么被折叠?



