给定一个正整数 n ,你可以做如下操作:
如果 n 是偶数,则用 n / 2替换 n 。
如果 n 是奇数,则可以用 n + 1或n - 1替换 n 。
n 变为 1 所需的最小替换次数是多少?
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/integer-replacement
题解:将奇数转偶数的策略改变为除二后向上下取整
int num(int n)
{
if(n == 1) {
return 0;
}
if(n % 2 == 0) {
return 1 + num(n / 2);
}
return min(num(n / 2),num(n / 2 + 1));