• 【Leetcode】位1的个数


    解题方案:位操作的技巧

    整数 n 和 n-1(n>0) 做与运算,从其二进制形式来看,可以消掉 n 的二进制数值中最后1个 “1” 。循环进行,每次消掉1个 “1” 。整数 n 的二进制数值中有多少个 “1” ,就需要进行多少次循环。

    执行用时 :4 ms, 在所有 C++ 提交中击败了83.46%的用户
    内存消耗 :8.2 MB, 在所有 C++ 提交中击败了23.43%的用户
    class Solution {
    public:
        int hammingWeight(uint32_t n) {
            int num = 0;
            
            while(n>0){
                n = n&(n-1);
                num++;
            }
            return num;
        }
    };
    执行用时 :4 ms, 在所有 C++ 提交中击败了83.46%的用户
    内存消耗 :8.3 MB, 在所有 C++ 提交中击败了5.21%的用户
    class Solution {
    public:
        int hammingWeight(uint32_t n) {
            return (n > 0) ? 1 + hammingWeight(n & (n - 1)) : 0;
        }
    };
  • 相关阅读:
    Java实现分页
    研发技能列表
    shell 函数
    养生
    再谈创新
    写代码注意事项
    排查问题方法
    简历撰写
    jenkins
    架构
  • 原文地址:https://www.cnblogs.com/gdut-gordon/p/11438989.html
Copyright © 2020-2023  润新知