目录
一、算法简述
191. 位1的个数
一、题目描述
二、思路解析
三、代码
338.比特位计数
一、题目描述
二、思路解析
三、代码
461.汉明距离
一、题目描述
二、思路解析
三、代码
声明:本博客涉及到的三道题均为一种做法的总结,建议先了解做法,然后强化代码能力。
一、算法简述
191. 位1的个数
一、题目描述
设置位:指在某数的二进制表示中值为1的个数
OJ题目链接:力扣(LeetCode)
二、思路解析
三、代码
class Solution {
public:
int hammingWeight(int n)
{
int cnt = 0;
while (n > 0)
{
int tmp = n - 1;
n = n & tmp;
cnt++;
}
return cnt;
}
};
338.比特位计数
一、题目描述
计算从0到n的每个数二进制中1的个数
OJ题目链接:力扣(LeetCode)
二、思路解析
三、代码
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)
二、思路解析
三、代码
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;
}
};