The idea is really easy, find the shortest path to '1' by using the function min(a,b)

Since n+1 is involved, overflow has to be considered.

Please let me know your doubts and suggestions, thanks!

```
public:
int integerReplacement(int n) {
if (n == INT_MAX) return 32;
if (n == 1) return 0;
return n%2 == 0 ? 1 + integerReplacement(n/2) : min(1+integerReplacement(n+1),1+integerReplacement(n-1));
}
};
```