您的位置:首页 > 其它

338. Counting Bits

2016-05-11 15:46 232 查看
题目描述:给定一个整数n,计算0到n每个数的二进制表示中1的个数
解题思路:可以使用动态规划。一个整数可以看做离它最近的二次幂加上另一个数
重点:2次幂为0,1为1,以此类推
public class Solution {public int[] CountBits(int num) {int[] bits = new int[num + 1];bits[0] = 0;if (num == 0)return bits;bits[1] = 1;if (num == 1)return bits;for (int i = 2; i <= num; i++){int m = (int)Math.Log(i, 2);int closeM = (int)Math.Pow(2, m);if (closeM == i)bits[i] = 1;else{bits[i] = bits[closeM] + bits[i - closeM];}}return bits;}}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: