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:
Fornum = 5
you should return[0,1,1,2,1,2]
.题目大意:给定一个数字,找出0到这个数字之前每个数中二进制中1的个数,存放到数组中,并返回
思路:1的个数等于除了最低位1的个数加上最低位1的个数
代码
package DP; /** * @author OovEver * 2018/1/3 16:40 * 1的个数等于除了最低位1的个数加上最低位1的个数 */ public class LeetCode338 { public int[] countBits(int num) { int[] res = new int[num + 1]; res[0] = 0; for(int i=1;i<num+1;i++) { res[i] = res[i / 2] + i % 2; } return res; } }