Back to all solutions

#397 - Integer Replacement

Problem Description

Given a positive integer n, you can apply one of the following operations:

  1. If n is even, replace n with n / 2.
  2. If n is odd, replace n with either n + 1 or n - 1.

Return the minimum number of operations needed for n to become 1.

Solution

/**
 * @param {number} n
 * @return {number}
 */
/**
 * @param {number} n
 * @param {number} count
 * @return {number}
 */
var integerReplacement = function(n, count = 0) {
  if (n === 1) return count;
  if (n % 2 === 0) {
    return integerReplacement(n / 2, count + 1);
  } else {
    return Math.min(integerReplacement(n + 1, count + 1), integerReplacement(n - 1, count + 1));
  }
};