C++ 中具有相同设置位数的下一个较高数字
给定一个数字 n,我们必须找到一个比 n 大的数字,并且在二进制表示中具有与 n 相同数量的设置位。
二进制表示中的数字 1 称为设置位。
让我们看一个例子。
输入
124
输出
143
算法
初始化数字 **n**。
编写一个函数获取设置位数的计数。
用 **n + 1** 初始化迭代变量。
编写一个无限循环。
检查等于 n 的设置位数的数字的设置位数。
找到时返回数字。
- 递增数字。
实现
以下是上述算法在 C++ 中的实现
#include <bits/stdc++.h>
using namespace std;
int getSetBitsCount(int n) {
int count = 0;
while (n) {
if (n % 2 == 1) {
count += 1;
}
n /= 2;
}
return count;
}
int getNextGreaterElementWithSameSetBits(int n) {
int setBitsCount = getSetBitsCount(n);
int i = n + 1;
while (true) {
if (setBitsCount == getSetBitsCount(i)) {
return i;
}
i += 1;
}
}
int main() {
int n = 124;
cout << getNextGreaterElementWithSameSetBits(n) << endl;
return 0;
}输出
如果运行上述代码,则将获得以下结果。
143
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP