https://leetcode.com/problems/integer-replacement/?tab=Description
偶数除二,奇数可以加一或者减一,问最少多少次变成1
奇数时,遇到3或者最后两位二进制为01时做减法,其余都做加法
public class Solution {
public int integerReplacement(int n) {
int res = 0;
while (n != 1) {
if ((n & 1) == 0) {
// 无符号右移!!!
n >>>= 1;
} else {
if (n == 3 || ((n & 3) == 1)) {
n--;
} else {
n++;
}
}
res++;
}
return res;
}
}
转载请注明原文地址: https://ju.6miu.com/read-3730.html