66. Plus One

Given a non-empty array of digits representing a non-negative integer, plus one to the integer.

The digits are stored such that the most significant digit is at the head of the list, and each element in the array contain a single digit.

You may assume the integer does not contain any leading zero, except the number 0 itself.

Example 1:

Input: [1,2,3]
Output: [1,2,4]
Explanation: The array represents the integer 123.

Example 2:

Input: [4,3,2,1]
Output: [4,3,2,2]
Explanation: The array represents the integer 4321.

Solution

class Solution:
    def plusOne(self, digits: List[int]) -> List[int]:

        i = len(digits) - 1

        digits[i] += 1

        while digits[i] == 10:
            digits[i] = 0
            if i == 0:
                digits.insert(0, 1)
            else:
                digits[i - 1] += 1

            i -= 1

        return digits

This one is pretty straightforward. We start off by adding 1 to the end of the list.

  • Example: [7, 8, 9] => [7, 8, 10]

Then, since every index in the array should represent one digit, we have to make sure to do basic math and carry the 1 to the left if we need to.

  • Example: [7, 8, 10] => [7, 9, 0]

We do this by setting the 10 index to 0, then incrementing the value to the left of it.

Be careful to check your index before incrementing it. If you are at the index 0 and try to change digits[i - 1], you’ll run into errors or unexpected behavior.

Try it on Leetcode