zoukankan      html  css  js  c++  java
  • LeetCode

    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.

    Credits:
    Special thanks to @ syedee for adding this problem and creating all test cases.

    public class Solution {
        public int[] countBits(int num) {
            int[] ret = new int[num+1];
            for (int i=0; i<=num; i++) {
                ret[i] = count(i);
            }
            return ret;
        }
        
        private int count(int num) {
            int cnt = 0;
            while (num != 0) {
                num &= (num - 1);//清除末尾1
                cnt ++;
            }
            return cnt;
        }
    }
  • 相关阅读:
    mysql事务
    mysql函数
    mysql自连接
    MYSQL添加外键关联
    SQL多表查询
    SQL数据完整性
    SQL limit
    SQL分组查询
    升级GCC 6.2编译LLVM的问题
    Quartz时SLF4J错误
  • 原文地址:https://www.cnblogs.com/wxisme/p/7326763.html
Copyright © 2011-2022 走看看