【leetcode】989. Add to Array-Form of Integer

题目如下:

For a non-negative integer X, the array-form of X is an array of its digits in left to right order.  For example, if X = 1231, then the array form is [1,2,3,1].

Given the array-form A of a non-negative integer X, return the array-form of the integer X+K.

 

Example 1:

Input: A = [1,2,0,0], K = 34
Output: [1,2,3,4]
Explanation: 1200 + 34 = 1234

Example 2:

Input: A = [2,7,4], K = 181
Output: [4,5,5]
Explanation: 274 + 181 = 455

Example 3:

Input: A = [2,1,5], K = 806
Output: [1,0,2,1]
Explanation: 215 + 806 = 1021

Example 4:

Input: A = [9,9,9,9,9,9,9,9,9,9], K = 1
Output: [1,0,0,0,0,0,0,0,0,0,0]
Explanation: 9999999999 + 1 = 10000000000

 

Note:

  1. 1 <= A.length <= 10000
  2. 0 <= A[i] <= 9
  3. 0 <= K <= 10000
  4. If A.length > 1, then A[0] != 0

解题思路:题目很简单,但是在相加的过程中要注意进位。同时K > A的场景需要做特殊处理。

代码如下:

class Solution(object):
    def addToArrayForm(self, A, K):
        """
        :type A: List[int]
        :type K: int
        :rtype: List[int]
        """
        carrier = 0
        for i in range(len(A)-1,-1,-1):
            remainder = K % 10
            K = K/10
            A[i] += (remainder + carrier)
            if A[i] >= 10:
                A[i] -= 10
                carrier = 1
            else:
                carrier = 0
        if carrier == 1 and K == 0:
            A.insert(0,1)
        elif K > 0:
            K += carrier
            while K > 0:
                A.insert(0, K% 10)
                carrier = 0
                K = K/10
        return A

 

posted @ 2019-02-12 13:46  seyjs  阅读(301)  评论(0编辑  收藏  举报