对于非负整数 X 而言,X 的数组形式是每位数字按从左到右的顺序形成的数组。例如,如果 X = 1231,那么其数组形式为 [1,2,3,1]。
给定非负整数 X 的数组形式 A,返回整数 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 <= 100000 <= A[i] <= 90 <= K <= 10000- 如果
A.length > 1,那么A[0] != 0
第一种思路:
跟415一样,逐位加就好。
class Solution(object):
def addToArrayForm(self, A, K):
"""
:type A: List[int]
:type K: int
:rtype: List[int]
"""
A = A[::-1]
B = list()
while(K):
K, t = divmod(K, 10)
B.append(t)
# print B
l1, l2 = len(A), len(B)
if l1 < l2:#保障l1更长
l1, l2 = l2, l1
A, B = B, A
res = [0 for _ in range(l1)]
for i in range(l1):
if i < l2:
res[i] += A[i] + B[i]
else:
res[i] += A[i]
while (res[i] > 9):
res[i] -= 10
if i != l1 - 1:
res[i + 1] += 1
else:
res.append(1)
l1 += 1
return res[::-1]
第二种思路:
都转整数然后相加,Python没有溢出所以可以这么搞。
class Solution(object):
def addToArrayForm(self, A, K):
"""
:type A: List[int]
:type K: int
:rtype: List[int]
"""
stra = ""
for digit in A:
stra += str(digit)
s = str(int(stra) + K)
return [int(x) for i, x in enumerate(s)]
版权声明:本文为qq_32424059原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。