给定一个非负整数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 <= A.length <= 10000
- 0 <= A[i] <= 9
- 0 <= K <= 10000
- 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 | # specific version |