zoukankan      html  css  js  c++  java
  • #Leetcode# 338. Counting Bits

    https://leetcode.com/problems/counting-bits/

    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 1:

    Input: 2
    Output: [0,1,1]

    Example 2:

    Input: 5
    Output: [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.

    代码:

    class Solution {
    public:
        vector<int> countBits(int num) {
            vector<int> dp(num + 1, 0);
            dp[0] = 0;
            for(int i = 1; i <= num; i ++) {
                if(isPowerOfTwo(i)) dp[i] = 1;
                else if(i % 2) dp[i] = dp[i - 1] + 1;
                else dp[i] = dp[i / 2];
            }
            return dp;
        }
        bool isPowerOfTwo(int n) {
            if(n <= 0) return false;
            if((n & (n - 1)) == 0) return true;
            return false;
        }
    };
    

      一会粗去跑步!

     

  • 相关阅读:
    构造函数
    Php基础知识测试题答案与解释
    bootstrap简介
    ajax删除数据(不跳转页面)
    ajax基础部分
    Jquery弹出窗口
    JSON
    Jquery之JSON的用法
    Jquery基本用法
    php购物车(练习)
  • 原文地址:https://www.cnblogs.com/zlrrrr/p/10821575.html
Copyright © 2011-2022 走看看