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; } }