目录

一、算法简述

191. 位1的个数

一、题目描述

二、思路解析

三、代码

338.比特位计数

一、题目描述

二、思路解析

三、代码

461.汉明距离

一、题目描述

二、思路解析

三、代码


声明:本博客涉及到的三道题均为一种做法的总结,建议先了解做法,然后强化代码能力。

一、算法简述

位运算算法(1)-LMLPHP
位运算算法(1)-LMLPHP

191. 位1的个数

一、题目描述

OJ题目链接:力扣(LeetCode)

二、思路解析

位运算算法(1)-LMLPHP

三、代码

class Solution {
public:
    int hammingWeight(int n) 
    {
        int cnt = 0;
        while (n > 0)
        {
            int tmp = n - 1;
            n = n & tmp;
            cnt++;
        }
        return cnt;
    }
};

338.比特位计数

一、题目描述

OJ题目链接:力扣(LeetCode)

二、思路解析

位运算算法(1)-LMLPHP

三、代码

class Solution {
public:
    vector<int> countBits(int n) 
    {
        vector<int> ans;
        for (int i = 0; i <= n; i++)
        {
            int cnt = 0;
            int ret = i; 
            while (ret > 0)
            {
                int tmp = ret - 1;
                ret = tmp & ret;
                cnt++;
            }
            ans.push_back(cnt);
        }
        return ans;
    }
};

461.汉明距离

一、题目描述

OJ题目链接:力扣(LeetCode)

二、思路解析

位运算算法(1)-LMLPHP

三、代码

class Solution {
public:
    int hammingDistance(int x, int y) 
    {
        int z = x ^ y;
        int cnt = 0;
        while (z > 0)
        {
            int tmp = z - 1;
            z = tmp & z;
            cnt++;
        }
        return cnt;
    }
};
03-30 06:25