关键路径

本文最后更新于 2024年4月9日 下午

这是由BBfat推荐给我的一道经典面试题:

输入一个整数,求将其转换为二进制后,该二进制中数字1的个数。

解法1

这是一种比较容易想的方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>

using namespace std;

int main()
{
int num, count;
count = 0;
cin >> num;
while (num)
{
if (num & 1)
count++;
num = num >> 1;
}
cout << count;
return 0;
}

解法2

还有一种不好想到,但是能达到同样目的的算法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

#include <iostream>

using namespace std;

int main()
{
int num, count;
cin >> num;
count = 0;
while (num)
{
count++;
num = num & (num - 1);
}
cout << count;
return 0;
}

关键路径
https://siegelion.cn/2020/03/12/整型数二进制1的个数/
作者
siegelion
发布于
2020年3月12日
许可协议