力扣 338. 比特位计数
题目
给你一个整数 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. 比特位计数相关推荐
- leetcode力扣338. 比特位计数
给定一个非负整数 num.对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回. 示例 1: 输入: 2 输出: [0,1,1] 示例 2: 输入: ...
- LeetCode 231. 2的幂 LeetCode 338. 比特位计数(2进制1的个数)
文章目录 1. 题目信息 2. 解题 拓展:求一个数n的2进制有多少个1? LeetCode 338 1. 题目信息 给定一个整数,编写一个函数来判断它是否是 2 的幂次方. 示例 1:输入: 1 输 ...
- Leetcode 338.比特位计数
Time: 20190904 Type: Medium 题目描述 给定一个非负整数 num.对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回. ...
- 338 比特位计数(动态规划-递推)
1. 问题描述: 给定一个非负整数 num.对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回. 示例 1: 输入: 2 输出: [0,1,1] ...
- leetcode 338. 比特位计数
给定一个非负整数 num.对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回. 示例 1: 输入: 2 输出: [0,1,1] 示例 2: 输入: ...
- 【LeetCode笔记】338. 比特位计数(Java、位运算、动态规划)
文章目录 题目描述 思路 & 代码 无注释二刷 题目描述 难点在于 O(n) 思路 & 代码 理解题意,分析出 O(n) 复杂度应该是要用到之前的值来得到当前值--动态规划 核心结论: ...
- leetcode 338 比特位计数
如果一个数i%2=1,即为奇数,即二进制中的最低位为1.我们将这个过程循环直至i为0,每一次i%2=1我们将该数的'1'数加一. 上面的方法不能做到复杂度O(n)完成所有数的的遍历.我们换成动态规划. ...
- 338. 比特位计数 golang
Me func countBits(num int) []int {result := make([]int, num+1)for i:=0; i<=num; i++ {result[i] = ...
- LeetCode 338. 比特位计数(动态规划)
题目描述 给定一个非负整数 num.对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回. 示例 1: 输入: 2 输出: [0,1,1] 示例 2 ...
最新文章
- PHP Mysql 网站迁移,Linux+PHP+MySql网站迁移配置
- 使用老毛桃U盘重装Windows10系统
- MFC随机博弈黑白棋
- 发布 128 核 Altra Max,自研内核,明年推出 5nm 处理器,“性能怪兽”Ampere 搞大事?
- Linux下批量修改文件名
- [机器学习] 概念解析:从经验风险、结构风险到代价函数、损失函数、目标函数
- HDU 2870 Largest Submatrix
- Matlab2018a安装包Linux版本
- eclipse中SVN分支合并到主干
- 七种经典回归分析法全解析
- 数据安全简单分析总结
- intel 新一代集成显卡
- 微信小程序 之wx.previewImage图片预览(多张图片预览)
- IOS开发使用@IBInspectable给控件添加额外属性
- 东南亚电商Shopee爆款打造小技巧,一定要收藏!
- safar浏览器找不到服务器,Safari浏览器打不开网页是什么问题 Safari有哪些操作技巧...
- hyper-v下安装群晖DSM5.0
- 使用matlab对图像进行二维傅里叶变换
- Android获取网络图片的三种方法
- cc2540 实战1