C ++中的整数替换
假设我们有一个正整数n,我们可以按照以下步骤进行这些操作-
如果n为偶数,则将n替换为n/2。
如果n为奇数,则可以将n替换为n+1或n-1。
我们必须找到n变为1所需的最小替换数?
因此,如果数字为7,则答案将为4,例如7→8→4→2→1或7→6→3→2→1
为了解决这个问题,我们将遵循以下步骤-
ret:=0,n:=x
当n>1时
如果n为3或n/2为偶数,则将n减1,否则将n加1
如果n是偶数,则c:=n/2
否则当n为偶数时
增加ret1
返回ret。
范例(C++)
让我们看下面的实现以更好地理解-
#include <bits/stdc++.h>
using namespace std;
typedef long long int lli;
class Solution {
public:
int bitCount(int x){
int ret = 0;
while(x){
ret++;
x >>= 1;
}
return ret;
}
int integerReplacement(int x) {
int ret = 0;
lli n = x;
while(n > 1){
if(n % 2 == 0){
n >>= 1;
}
else if(n & 1){
if(n == 3 || (((n >> 1) & 1 )== 0)){
n--;
} else {
n++;
}
}
ret++;
}
return ret;
}
};
main(){
Solution ob;
cout << (ob.integerReplacement(7));
}输入值
7
输出结果
4
热门推荐
1 训练狗狗憋尿
2 狗狗追踪训练
3 狗狗训练要多少钱
5 深圳狗狗训练
6 训练狗狗唤回
7 狗狗叫怎么训练
8 狗狗训练班
10 狗狗社会化训练
11 狗狗叫回训练
12 广州狗狗训练学校
13 狗狗训练躺下
14 狗狗随行训练
15 训练狗狗巡回
16 狗狗要怎么训练
17 狗狗喂食训练
18 训练狗狗躺下