from typing import List


class Solution:
    def plusOne(self, digits: List[int]) -> List[int]:
        j = len(digits) - 1
        if j == 0:
            if digits[0] + 1 < 10:
                digits[0] = digits[0] + 1
                return digits
            else:
                digits[0] = 1
                digits.append(0)
                return digits
        digits[j] = digits[j] + 1
        while j >= 1:
            if digits[j] < 10:
                return digits
            if digits[j] == 10:
                digits[j] = 0
                digits[j - 1] = digits[j - 1] + 1
                j -= 1
        if digits[0] == 10:
            digits[0] = 1
            digits.append(0)
        return digits


sl1 = Solution()
print(sl1.plusOne([1, 3, 5, 6]))
print("---")
print(sl1.plusOne([1, 2, 3]))
print("---")
print(sl1.plusOne([4, 3, 2, 1]))
print("---")
print(sl1.plusOne([9, 9, 9]))
print("---")
print(sl1.plusOne([0]))
print("---")
print(sl1.plusOne([9]))
print("---")
print(sl1.plusOne([1, 9, 9, 9, 9]))
print("---")
print(sl1.plusOne([9, 8, 9]))
