[LeetCode]338. Counting Bits

    xiaoxiao2021-03-25  122

    [LeetCode]338. Counting Bits

    思路

    对于每一位数,计算其中1的个数,计算过程优化,可以使时间较短

    代码

    class Solution { public: vector<int> countBits(int num) { vector<int> res; for (int i = 0; i < num + 1; ++i) { int count = 0, n = i; while (n){ ++count; n &= n - 1; } res.push_back(count); } return res; } };

    思路 update

    对于上述代码中的循环计算,对于5来说,只需要计算 5 & 4 的结果,之前的结果都保存在前一位数中

    代码 update

    class Solution { public: vector<int> countBits(int num) { vector<int> res(num + 1, 0); for (int i = 1; i < num + 1; ++i) { res[i] = res[i & (i - 1)] + 1; } return res; } };
    转载请注明原文地址: https://ju.6miu.com/read-24182.html

    最新回复(0)