LeetCode #989. Add to Array-Form of Integer

题目

989. Add to Array-Form of Integer


解题方法

设置一个digitpos记录数组中下一步应该加的位置,当K不等于0时做循环,取K和10的余数作为每次的加数,从digitpos开始向前做进位加法,当i越界时在第0位插入余数num,如果进位加法结束时的i没有越界,就把digitpos减一。加完之后再把K整除10继续循环直到K=0。
时间复杂度:未知,挺快的,beats 93.88%...
空间复杂度:O(1)


代码

class Solution:
    def addToArrayForm(self, A: List[int], K: int) -> List[int]:
        digitpos = len(A) - 1
        while K:
            num = K % 10
            i = digitpos
            while i > -1 and num:
                A[i] += num
                num = 0
                if A[i] > 9:
                    A[i] -= 10
                    i -= 1
                    num = 1
            else:
                if i < 0:
                    A.insert(0, num)
                else:
                    digitpos -= 1
            K //= 10
        return A
posted @ 2020-11-23 13:45  老鼠司令  阅读(46)  评论(0)    收藏  举报