The idea here is to start from the right side. As soon as we find a number that isn't 9 we can add 1 to it and return. If the number is 9, we change it to 0 and continue until we find a number that is not 9 to carry the 1 to. If we reach the end of array with all 9's we then insert the 1 in front of array.
def plusOne(self, digits): for i in range(len(digits)-1, -1, -1): digits[i] = digits[i] + 1 if digits[i] < 9 else 0 if digits[i]: return digits digits.insert(0, 1) return digits