Counting Bits
来源:互联网 发布:菩提果月嫂 知乎 编辑:程序博客网 时间:2024/05/22 05:05
题目描述:
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 timeO(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.
如果用时间复杂度为O(n)的来写的话,先找到这么一个规律。
例如5表示为101,它的1的个数就是001(即5%4=1)的个数+1,6表示为110,它的1的个数就是010(即6%4=2)的个数+1.所以关键找到这个4,然后取余加1即可。
代码如下:
public class Solution { public int[] countBits(int num) { int[] dp=new int[num+1]; dp[0]=0; int n=0; for(int i=1;i<=num;i++){ if(i==1<<(n+1)) n++; dp[i]=dp[i%(1<<n)]+1; } return dp; }}
0 0
- Counting Bits
- Counting Bits
- Counting Bits
- Counting Bits
- Counting Bits
- Counting Bits
- Counting Bits
- Counting Bits
- Counting Bits
- Counting Bits
- Counting Bits
- Counting Bits
- Counting Bits
- Counting Bits
- Counting Bits
- Counting Bits
- Counting Bits
- Counting Bits
- Android Dialog大全
- iOS 多线程总结
- aerospike的安装
- Xamarin中Unsupported major.minor version 52.0问题解决
- Android GridView
- Counting Bits
- jdbcTemplate高效批量插入和批量更新
- mysql5.7设置不区分大小写
- android点击事件的分发过程
- 浏览器环境下用javascript创建鼠标点击事件,事件模拟
- 寻找开发技术合伙人- VC水平中等水平即可
- PaaS
- 回答“sc7376515”同学的问题——如何排列扇形的UGUI?
- DESUtils 加解密时 Given final block not properly padded bug小记