[Leetcode] Counting Bits
来源:互联网 发布:汽车音响电脑调音软件 编辑:程序博客网 时间:2024/05/22 13:12
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]
.
Follow up:
- It is very easy to come up with a solution with run time O(n*sizeof(integer)). But can you do it in linear time O(n) /possibly in a single pass?
- Space complexity should be O(n).
- Can you do it like a boss? Do it without using any builtin function like __builtin_popcount in c++ or in any other language.
public class Solution { public int[] countBits(int num) { int[] result = new int[num+1]; result[0] = 0; for(int i = 1; i <= num; i++) { // odd if((i & 0x1) != 0) { result[i] = result[i-1] + 1; } else { int change = 1 - numOfRightmostBits(i-1); result[i] = result[i-1] + change; } } return result; } private int numOfRightmostBits(int num) { int result = 0; while((num & 0x1) != 0) { result++; num = num >> 1; } return result; }}
public class Solution { public int[] countBits(int num) { int[] result = new int[num + 1]; int pow = 1; int p = 1; for(int i = 1; i <= num; i++) { if(i == pow) { result[i] = 1; p = 1; pow = pow << 1; } else { result[i] = result[p] + 1; p++; } } return result; }}
0 0
- leetcode:bits:Counting Bits(338)
- [leetcode] 338. Counting Bits
- 【LeetCode-338】Counting Bits
- leetcode-338-Counting Bits
- leetcode:Counting Bits
- [C]LeetCode:Counting Bits
- LeetCode Counting Bits
- leetcode 338. Counting Bits
- leetcode Counting Bits
- [LeetCode]338. Counting Bits
- LeetCode#338. Counting Bits
- Leetcode 338 Counting Bits
- [LeetCode] 338. Counting Bits
- LeetCode之Counting Bits
- LeetCode 338. Counting Bits
- LeetCode 338 :Counting Bits
- leetcode--Counting Bits
- [leetcode-338]Counting Bits
- 关于spring 的那些事
- BAPI:BAPI_BILLINGDOC_CREATEMULTIPLE (TCODE:VF01 - 销售Invoice预制)
- 简单的创建app id 的流程
- First try play Git!Windows(change- dele)萌新的摸爬滚打之路
- TFS Workspace错误解决办法
- [Leetcode] Counting Bits
- GMT & 时间日期格式
- 微信
- 作为一个程序员如何去提高你的技能
- 设计模式(一)——基础概念
- MaterialDesign学习笔记2:TabLayout+ViewPaper实现滑动切换
- 输出分段函数的表达式
- 欢迎使用CSDN-markdown编辑器
- Android 子线程更新UI