[LeetCode][Java][JavaScript]Counting Bits

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

https://leetcode.com/problems/counting-bits/



计算转成二进制之后有几个1。

动态规划,二进制每多一位就把结果数组中所有的结果都加一,再放回结果数组中。

Java:

public class Solution {
     public static int[] countBits(int num) {
        if(num == 0) return new int[]{0};
        int[] result = new int[num + 1];
        int len, count = 0;
        while(true){
        	len = count + 1;
        	for(int i = 0; i < len; i++){
        		count++;
        		result[count] = result[i] + 1;
        		if(count >= num)
        			return result;
        	}
        }
    }
}

  

Javascript,和Java一样的代码,强行MLE,等几天看看是不是bug能否被修复:

/**
 * @param {number} num
 * @return {number[]}
 */
var countBits = function(num) {
	if(num === 0) return [0];
    var result = [0], len, count = 0;
    while(true){
    	len = result.length;
    	for(var i = 0; i < len; i++){
    		result.push(result[i] + 1);
    		count++;
    		if(count >= num)
    			return result;
    	}
    }
};

  

时间: 2024-10-25 13:40:53

[LeetCode][Java][JavaScript]Counting Bits的相关文章

leetcode(1)--338.Counting Bits

LeetCode 338. 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,

【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 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

【Leetcode 338】 Counting Bits

---恢复内容开始--- 问题描述:给出一个非负整数num,对[0, num]范围内每个数都计算它的二进制表示中1的个数 Example:For num = 5 you should return [0,1,1,2,1,2] 思路:这种题适合归纳法,找出规律然后用编程语言描述,令i从0开始,设f(i)为i对应二进制表示中1的个数 也就是每次有一个大小为2^n的序列,把他们每个数都加1,然后插入到结尾就构成了大小为2^(n+1)个序列. 直到2^(n+1)比num大,取前num个数组成序列返回即可

leetcode 上的Counting Bits 总结

最近准备刷 leetcode  做到了一个关于位运算的题记下方法 int cunt = 0; while(temp) { temp = temp&(temp - 1);  //把二进制最左边那个1变为零 count++;   //统计1的个数 } 同理把位二进制坐左边那个0变为1 就可以  temp = temp|(temp + 1)

leetcode笔记: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

Leetcode题目: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 v

leetCode 338. Counting Bits | Dynamic Programming | Medium

338. 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]. 题目大意

Gray Code leetcode java

题目: The gray code is a binary numeral system where two successive values differ in only one bit. Given a non-negative integer n representing the total number of bits in the code, print the sequence of gray code. A gray code sequence must begin with 0

Sort Colors leetcode java

题目: Given an array with n objects colored red, white or blue, sort them so that objects of the same color are adjacent, with the colors in the order red, white and blue. Here, we will use the integers 0, 1, and 2 to represent the color red, white, an