Leetcode数组题 “加一”奇怪的逻辑错误?(Python)

先放题目:
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。

示例 1:
输入: [1,2,3]
输出: [1,2,4]
解释: 输入数组表示数字 123。

示例 2:
输入: [4,3,2,1]
输出: [4,3,2,2]
解释: 输入数组表示数字 4321。

我的思路是将输入数组变成int变量,对变量+1后再映射成数组。

映射时用map()函数会相对简单,并且能够实现。但起初我对map()函数不熟悉的时候自己写了一个将int映射成list的函数,出现了问题。

先上代码:

class Solution:
    def plusOne(self, digits: List[int]) -> List[int]:
        length = len(digits)
        figure = 1
        for digit in digits:
            length -= 1
            figure += digit * (10**length)

        result = self.f(figure)
       # result = list(map(int,str(figure)))

        return result


    def f(self,number: int) -> List[int]:
        a = int(number / 10); #商
        b = [int(number % 10)]; #余数
        if a == 0 : return b
        else : 
            L = self.f(a)
            L.extend(b)
            return L

对于大多数的测试用例都能通过,直到遇到这一条:

输入:
[6,1,4,5,3,9,0,1,9,5,1,8,6,7,0,5,5,4,3]

输出:
[6,1,4,5,3,9,0,1,9,5,1,8,6,7,0,6,6,2,4]

预期:
[6,1,4,5,3,9,0,1,9,5,1,8,6,7,0,5,5,4,4]

通过实验,发现错误与位数有关。

我的输入
[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]

我的答案
[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2]

预期答案
[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2]

如上例子中,直到手动把1累加到18位,才会出现答案与预期不一致的问题。

原本猜测,是python整型变量的大小范围问题。经过查阅资料和实验,排除了该种可能性,因为其一,python的整型变量没有大小限制,其次,通过map()函数成功通过了测试,说明上述代码中figure这个变量是准确的。

本人才疏学浅,没能解决这个问题,希望各位大佬慷慨相授!谢谢!

https://blog.csdn.net/pacificL/article/details/105218683