package problems.medium; /** * Created by sherxon on 1/13/17. */ public class ReplacementInteger { public static void main(String[] args) { ReplacementInteger ir = new ReplacementInteger(); System.out.println(ir.integerReplacement(65535)); } public int integerReplacement(int m) { long n = (long) m; long counter = 0; while (n != 1) { if (n % 2 == 0) n /= 2; else { if (n != 3 && maxPow2(n + 1) > maxPow2(n - 1)) n += 1; else n -= 1; } counter++; } return Long.valueOf(counter).intValue(); } long maxPow2(long a) { if ((a & (a - 1)) == 0) { return Long.bitCount(a - 1); } long count = 0; while (a % 2 == 0) { a /= 2; count++; } return count; } }