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;}}
相关文章推荐
- DDR3详解(以Micron MT41J128M8 1Gb DDR3 SDRAM为例)
- Uploadify 3.2 参数属性、事件、方法函数详解
- MFC界面美化方法
- 【备份】Java实现忽略SSL认证请求https
- 查看.class文件编译JDK版本 1.3/1.4/1.5/1.6 UE
- Elasticsearch索引(company)_Centos下CURL增删改
- Oracle基本sql操作
- 判断给定的字符串是否是回文数(用栈实现)
- 【HUSTOJ】1104: 纯粹素数
- iOS学习--ViewController之间的跳转
- C# class 前加 Public 的作用
- Spring中事务的XML方式[声明方式]
- 学习笔记一:HotSpot中的一些概念
- Ubuntu 14.04下安装mongodb及测试
- iOS Core Data 数据迁移 指南
- using System.Diagnostics 命名空间
- [android studio]解决android studio drawable新建项目时只有一个drawable目录的问题
- 安装apache服务器80端口被pid4占用的解决方法
- proget Android代码混淆
- CC2541