动态规划——338. Counting Bits[Medium]
来源:互联网 发布:钢结构图纸设计软件 编辑:程序博客网 时间:2024/05/21 08:59
题目描述
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:
For num = 5
you should return [0,1,1,2,1,2]
.
解题思路
一般的思路,为每一个数求出二进制,是‘1’则对应的计数器加一。但是我估计应该会超时。由于刚学过动态规划,我就想能不能往那边靠。动态规划的思想就是,把大问题变成小问题,而这个小问题你在前面已经解决而且被记录下了结果(一般是一个数组)。加上,一说到二进制,自然会想到不断地模2。于是,开始找规律,找到大数和小数二进制的关系。(关系如下图)
代码如下
class Solution {public: vector<int> countBits(int num) { if (num == 0)return vector<int>(1, 0);vector<int> re(num+1, 0);re[1] = 1;for (int i = 1; i <= num; i++) {int tmp = i;int count = 0;while (re[tmp] == 0) {if (tmp == 0)break;tmp % 2 == 0 ? count + 0 : count++;tmp /= 2;}re[i] = re[tmp] + count;}return re; }};
0 0
- 动态规划——338. Counting Bits[Medium]
- 338. Counting Bits #Medium
- 338. Counting Bits -Medium
- 338. Counting Bits-medium
- Counting Bits——Difficulty:Medium
- leetcode -- 338. Counting Bits 【动态规划】
- 338. Counting Bits(动态规划)
- 动态规划解338. Counting Bits
- 338. Counting Bits [medium] (Python)
- 338. Counting Bits 难度:medium
- LeetCode 338. Counting Bits (Medium)
- 【动态规划】Leetcode编程题解:338. Counting Bits
- 338.LeetCode Counting Bits(medium)[二进制位处理]
- Leetcode 338. Counting Bits (Medium) (cpp)
- LeetCode解题报告 338. Counting Bits [medium]
- 【leetcode】【Medium】【338. Counting Bits】【规律】
- [Medium] Counting Bits
- [Medium]Counting Bits
- Java入门学习-理解什么是JRE和JDK,然后搭建JAVA开发环境,用eclipse写出第一个helloworld程序
- 当心,安卓远控(spynote)升级了……
- photoshop 打开图片 无法完成请求因为程序错误
- Spring Boot系列(一):初识spring boot开发
- 实验楼 程序员的训练场
- 动态规划——338. Counting Bits[Medium]
- 面试20之创建含有某一深度上所有结点的链表。
- python2和python3同时安装如何使用pip
- AJAX开发---JQuery中的Ajax操作
- JellyRefreshLayout事件冲突解决方案
- 黑客讲述渗透Hacking Team全过程(详细解说)
- Python操作excel
- POJ1046简单枚举
- phpfpm nginx 指标监控