https://leetcode.com/problems/integer-replacement/ // 除了首位的1,其他的1需要2次操作,0需要1次操作。 // 所以尽量把1变成0 // 所以,3直接得出结果2, // 其他的,01->-1,11->+1 public class Solution { public int integerReplacement(int inn) { long n = inn; if (n <= 3) { return (int)n-1; } int step = 0; while (n > 3) { // 注意下面的括号,必须有 if ((n & 1) == 0) { n >>= 1; } else if ((n & 2) == 2) { n += 1; } else { n -= 1; } step++; } return step + (int)n - 1; } }