【leetcode】989. Add to Array-Form of Integer
题目如下:
For a non-negative integer
X
, the array-form ofX
is an array of its digits in left to right order. For example, ifX = 1231
, then the array form is[1,2,3,1]
.Given the array-form
A
of a non-negative integerX
, return the array-form of the integerX+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 <= A.length <= 10000
0 <= A[i] <= 9
0 <= K <= 10000
- If
A.length > 1
, thenA[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