338. Counting Bits

£神魔★判官ぃ 2022-01-15 06:51 274阅读 0赞

为什么80%的码农都做不了架构师?>>> hot3.png

c5a2642370c2ca3440abed1546dc0893e51.jpg

想法:用一个掩码获取除最高位之外的剩下的几位 其中掩码分别是 0,2-1,4-1,8-1,16-1,…

当mask = 7,x = 9时,ans[x&mask]是后面几位中数字1的个数

  1. class Solution {
  2. public int[] countBits(int num) {
  3. int[] ans = new int[num+1];
  4. ans[0] = 0;
  5. int mask = 0;
  6. for(int x=1;x<=num;x++){
  7. ans[x] = 1+ans[(x&mask)];
  8. if((mask&x)==mask){
  9. mask = (mask<<1)+1;
  10. }
  11. }
  12. return ans;
  13. }
  14. }

转载于:https://my.oschina.net/reter/blog/3008921

发表评论

表情:
评论列表 (有 0 条评论,274人围观)

还没有评论,来说两句吧...

相关阅读