给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。

示例 1:

输入: 2
输出: [0,1,1]
示例 2:

输入: 5
输出: [0,1,1,2,1,2]
进阶:

给出时间复杂度为O(n*sizeof(integer))的解答非常容易。但你可以在线性时间O(n)内用一趟扫描做到吗?
要求算法的空间复杂度为O(n)。
你能进一步完善解法吗?要求在C++或任何其他语言中不使用任何内置函数(如 C++ 中的 __builtin_popcount)来执行此操作。

思路:记录之前的答案,对于现在的数字:除了最高位,剩下的数字已经被算出来了,答案就等于最高位(1或0)+之前的答案即可。

public class Solution {public int[] countBits(int num) {int[] ans = new int[num + 1];for (int i = 1; i <= num; ++i)ans[i] = ans[i >> 1] + (i % 2);return ans;}
}

leetcode338 比特位计数相关推荐

  1. Leetcode338. 比特位计数

    Leetcode338. 比特位计数 题目: 给你一个整数 n ,对于 0 <= i <= n 中的每个 i ,计算其二进制表示中 1 的个数 ,返回一个长度为 n + 1 的数组 ans ...

  2. leetcode--338. 比特位计数

    给定一个非负整数 num.对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回. 示例 1: 输入: 2 输出: [0,1,1] 示例 2: 输入: ...

  3. (动态规划)leetcode338:比特位计数

    题目 给定一个非负整数 num.对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回. 示例 1: 输入: 2 输出: [0,1,1] 示例 2: ...

  4. 《LeetCode力扣练习》第338题 比特位计数 Java

    <LeetCode力扣练习>第338题 比特位计数 Java 一.资源 题目: 给你一个整数 n ,对于 0 <= i <= n 中的每个 i ,计算其二进制表示中 1 的个数 ...

  5. LeetCode每日一题:比特位计数(No.338)

    题目:比特位计数 给定一个非负整数 num.对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回. 复制代码 示例: 输入: 2 输出: [0,1, ...

  6. 比特位计数--C++ bitset 用法

    比特位计数 前言 一.示例 二.代码解析 1.比特位计数 2.测试代码 3.结果 三.C++ bitset 用法 1.构造函数 2.一些函数 3.结果 总结 前言 给定一个非负整数 num.对于 0 ...

  7. (LeetCode C++)比特位计数

    给你一个整数 n ,对于 0 <= i <= n 中的每个 i ,计算其二进制表示中 1 的个数 ,返回一个长度为 n + 1 的数组 ans 作为答案. 示例 1: 输入:n = 2 输 ...

  8. LeetCode338:比特位计数

    要求 给你一个整数 n ,对于 0 <= i <= n 中的每个 i ,计算其二进制表示中 1 的个数 ,返回一个长度为 n + 1 的数组 ans 作为答案. 思路 所有数字只有两类:奇 ...

  9. 比特位计数—leetcode338

    给定一个非负整数 num.对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回. 示例 1: 输入: 2 输出: [0,1,1] 示例 2: 输入: ...

最新文章

  1. Confluence 6 如何配置快速导航的同时查找数量
  2. 在神经网络中使用dropout
  3. nginx+keepalived高可用及双主模式
  4. VC6在64位Win7下调试无法退出的问题(缺少TLLOC.DLL和DM.dll)
  5. PyTorch 和 Tensorflow 学哪个?上手简单的PyTorch考虑一下!
  6. Ctrl+Alt+F1~F6
  7. jquery 自动触发事件 trigger
  8. Java命令行界面(第5部分):JewelCli
  9. 3K档真香旗舰!一加9RT今日正式开售:榨干索尼IMX 766旗舰传感器
  10. 在Anaconda上安装Caffe 和 CUDA
  11. 英特尔新任CEO的“开挂”人生
  12. 浏览器访问sftp服务器_Mountain Duck for Mac(FTP服务器管理工具)v4.0.0.16698
  13. 【Linux】CentOS下vim的配置
  14. 剖析Disruptor:为什么会这么快?(一)Ringbuffer的特别之处
  15. 产业研发用房是什么意思_【企业】米东中小微创业产业园:筑巢引凤栖 花开蝶自来...
  16. 从零开始学习Sencha Touch MVC应用之十三
  17. java todo注释_Java自定义注解
  18. 会话技术——Cookie
  19. ride不能启动解决办法
  20. ubuntu更改更新源

热门文章

  1. ide快捷键_一款好用的IDE怎么可以没有代码提示?
  2. C++11 标准新特性: 右值引用与转移语义
  3. Linux TCP server系列(6)-select模式下的多线程server
  4. java 合并单元格 把数据合并没了_合并单元格
  5. android 好玩的ui,让安卓更好玩 这些Launchers值得拥有
  6. Sharepoin学习笔记—架构系列—07nSharepoint服务(Services)与服务应用程序框架(Service Application Framework) 2
  7. 终于找到了:NuGet 修改包路径
  8. a.pop啥意思python_python中pop什么意思
  9. 【JS 逆向百例】网洛者反爬练习平台第六题:JS 加密,环境模拟检测
  10. 【PTA天梯赛CCCC -2017决赛L1-6 】整除光棍 (20 分)(大数模拟除法)