1 minute read

You are given a large integer represented as an integer array digits, where each digits[i] is the ith digit of the integer. The digits are ordered from most significant to least significant in left-to-right order. The large integer does not contain any leading 0’s.

Increment the large integer by one and return the resulting array of digits.

Example 1:

Input: digits = [1,2,3] Output: [1,2,4] Explanation: The array represents the integer 123. Incrementing by one gives 123 + 1 = 124. Thus, the result should be [1,2,4]. Example 2:

Input: digits = [4,3,2,1] Output: [4,3,2,2] Explanation: The array represents the integer 4321. Incrementing by one gives 4321 + 1 = 4322. Thus, the result should be [4,3,2,2]. Example 3:

Input: digits = [9] Output: [1,0] Explanation: The array represents the integer 9. Incrementing by one gives 9 + 1 = 10. Thus, the result should be [1,0].

/**
 * @param {number[]} digits
 * @return {number[]}
 */
var plusOne = function (digits) {
  const n = digits.length;

  for (let i = n - 1; i >= 0; i--) {
    digits[i]++;

    if (digits[i] < 10) {
      return digits;
    }

    digits[i] = 0;
  }

  digits.unshift(1);

  return digits;
};

The function starts by getting the length of the array (n variable). It then iterates over the array from right to left using a for loop.

Inside the loop, each digit is incremented by 1 (digits[i]++). If the incremented digit is less than 10, it means no carry is needed, so the updated digits are returned.

If the incremented digit is 10 or greater, a carry operation is performed. The current digit is set to 0 (digits[i] = 0), indicating that a carry occurred. The loop continues to the next digit.

If the loop completes without returning, it means all digits were 9, and we need to add an additional digit with the value 1 at the beginning of the array using unshift(1).

Finally, the updated array of digits is returned.

Leave a comment