338. Counting Bits (Binary)

这个规律找的更好,规律是,从1开始,遇到偶数时,其1的个数和该偶数除以2得到的数字的1的个数相同,遇到奇数时,其1的个数等于该奇数除以2得到的数字的1的个数再加1

 

 

 1 class Solution {
 2     public int[] countBits(int num) {
 3         int[] res = new int[num + 1];
 4         res[0] = 0;
 5         for(int i = 1; i <= num; i++) {  //注意是 <=
 6             if(i % 2 == 0 ) {
 7                 res[i] = res[i / 2];
 8             }else {
 9                 res[i] = res[i / 2] + 1;
10             }
11         }
12        return res; 
13     }
14 }

 

posted @ 2018-08-01 01:36  jasoncool1  阅读(82)  评论(0编辑  收藏  举报