Leetcode 989 Add to Array-Form of Integer

给定一个非负整数x的列表表示形式,例如x = 1231,那么列表形式就是[1,2,3,1
现在给定一个X的列表表示形式及一个整数K,求X+K的列表表示形式

示例 1:
输入: A = [1,2,0,0], K = 34
输出: [1,2,3,4]
解释: 1200 + 34 = 1234

示例 2:
输入: A = [2,7,4], K = 181
输出: [4,5,5]
解释: 274 + 181 = 455

示例 3:
输入: A = [2,1,5], K = 806
输出: [1,0,2,1]
解释: 215 + 806 = 1021

示例 4:
输入: A = [9,9,9,9,9,9,9,9,9,9], K = 1
输出: [1,0,0,0,0,0,0,0,0,0,0]
解释: 9999999999 + 1 = 10000000000

提示:

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

思路分析:
可以有两种方法,一种是将K也变成列表形式,然后从后向前叠加,用一个flag表示进位,如果最终仍有进位就在最前面加一个[1]
另一种是将A变成整数形式,然后和K相加,将相加的结果最后再转换成列表形式。

我这里选择的是第二种思路,因为更加简单明了

1
2
3
4
# one line version
class Solution(object):
def addToArrayForm(self, A, k):
return map(int, list(str(int(''.join(map(str, A))) + k)))

1
2
3
4
5
6
7
# specific version
class Solution(object):
def addToArrayFor,(self, A ,k):
A = ''.join(map(str, A))
res = int(A) + K
res = list(str(res))
return map(int, res)