题目

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

示例

输入:n = 2
输出:[0,1,1]
解释:
0 --> 0
1 --> 1
2 --> 10

输入:n = 5
输出:[0,1,1,2,1,2]
解释:
0 --> 0
1 --> 1
2 --> 10
3 --> 11
4 --> 100
5 --> 101

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/counting-bits
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

方法1:库函数

Java实现
class Solution {public int[] countBits(int n) {int[] res = new int[n + 1];for (int i = 0; i <= n; i++) {res[i] = Integer.bitCount(i);}return res;}
}

方法2:模拟

Java实现
class Solution {public int[] countBits(int n) {int[] res = new int[n + 1];for (int i = 0; i <= n; i++) {res[i] = count(i);}return res;}public int count(int n) {int sum = 0;while (n != 0) {if (n % 2 == 1) sum++;n /= 2;}return sum;}
}

方法3:Brian Kernighan 算法

Java实现
class Solution {public int[] countBits(int n) {int[] res = new int[n + 1];for (int i = 0; i <= n; i++) {res[i] = countOnes(i);}return res;}public int countOnes(int x) {int res = 0;while (x > 0) {x = x & (x - 1);res++;}return res;}
}

力扣 338. 比特位计数相关推荐

  1. leetcode力扣338. 比特位计数

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

  2. LeetCode 231. 2的幂 LeetCode 338. 比特位计数(2进制1的个数)

    文章目录 1. 题目信息 2. 解题 拓展:求一个数n的2进制有多少个1? LeetCode 338 1. 题目信息 给定一个整数,编写一个函数来判断它是否是 2 的幂次方. 示例 1:输入: 1 输 ...

  3. Leetcode 338.比特位计数

    Time: 20190904 Type: Medium 题目描述 给定一个非负整数 num.对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回. ...

  4. 338 比特位计数(动态规划-递推)

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

  5. leetcode 338. 比特位计数

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

  6. 【LeetCode笔记】338. 比特位计数(Java、位运算、动态规划)

    文章目录 题目描述 思路 & 代码 无注释二刷 题目描述 难点在于 O(n) 思路 & 代码 理解题意,分析出 O(n) 复杂度应该是要用到之前的值来得到当前值--动态规划 核心结论: ...

  7. leetcode 338 比特位计数

    如果一个数i%2=1,即为奇数,即二进制中的最低位为1.我们将这个过程循环直至i为0,每一次i%2=1我们将该数的'1'数加一. 上面的方法不能做到复杂度O(n)完成所有数的的遍历.我们换成动态规划. ...

  8. 338. 比特位计数 golang

    Me func countBits(num int) []int {result := make([]int, num+1)for i:=0; i<=num; i++ {result[i] = ...

  9. LeetCode 338. 比特位计数(动态规划)

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

最新文章

  1. PHP Mysql 网站迁移,Linux+PHP+MySql网站迁移配置
  2. 使用老毛桃U盘重装Windows10系统
  3. MFC随机博弈黑白棋
  4. 发布 128 核 Altra Max,自研内核,明年推出 5nm 处理器,“性能怪兽”Ampere 搞大事?
  5. Linux下批量修改文件名
  6. [机器学习] 概念解析:从经验风险、结构风险到代价函数、损失函数、目标函数
  7. HDU 2870 Largest Submatrix
  8. Matlab2018a安装包Linux版本
  9. eclipse中SVN分支合并到主干
  10. 七种经典回归分析法全解析
  11. 数据安全简单分析总结
  12. intel 新一代集成显卡
  13. 微信小程序 之wx.previewImage图片预览(多张图片预览)
  14. IOS开发使用@IBInspectable给控件添加额外属性
  15. 东南亚电商Shopee爆款打造小技巧,一定要收藏!
  16. safar浏览器找不到服务器,Safari浏览器打不开网页是什么问题 Safari有哪些操作技巧...
  17. hyper-v下安装群晖DSM5.0
  18. 使用matlab对图像进行二维傅里叶变换
  19. Android获取网络图片的三种方法
  20. cc2540 实战1

热门文章

  1. 视频倒放怎么制作?视频倒放方法分享。
  2. NN学习技巧之参数最优化的四种方法对比(SGD, Momentum, AdaGrad, Adam),基于MNIST数据集
  3. 量化交易系统如何获取股票数据的执行过程?
  4. SQL注入_数据库基础
  5. idea中的maven里面项目有灰色的
  6. 华为云获取OBS中视频截帧图片
  7. 软考-软件设计师】(二). 操作系统
  8. 600度近视眼恢复方法_600度近视眼恢复方法有哪些
  9. 正则表达式--大集合
  10. school 靶机 wp