Topic:
对于非负整数 X 而言,X 的数组形式是每位数字按从左到右的顺序形成的数组。例如,如果 X = 1231,那么其数组形式为 [1,2,3,1]。
给定非负整数 X 的数组形式 A,返回整数 X+K 的数组形式。
Example_1:
输入:A = [1,2,0,0], K = 34
输出:[1,2,3,4]
解释:1200 + 34 = 1234
Example_2:
输入:A = [2,7,4], K = 181
输出:[4,5,5]
解释:274 + 181 = 455
Example_3:
输入:A = [2,1,5], K = 806
输出:[1,0,2,1]
解释:215 + 806 = 1021
Example_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
Solution_1:
扫描二维码关注公众号,回复:
12245743 查看本文章
按照不同的位数遍历列表A并输出
将A转换为数字
之后加上K的值并转换成列表的形式输出
运行效率低
Code_1:
class Solution:
def addToArrayForm(self, A: List[int], K: int) -> List[int]:
ans = 0
n = len(A)
for i in range(len(A)):
ans += (A[n - i - 1] * 10 ** (i))
ans += K
res = list(str(ans))
return res
Solution_2:
将原列表中的值逐位加入到空字符串中
并将字符串转换为整数的形式
最后同样是加上k
转换为列表后输出
Code_2:
class Solution:
def addToArrayForm(self, A: List[int], K: int) -> List[int]:
ans = int(''.join(str(i) for i in A))
ans += K
return(list(str(ans)))
Result_2:
Solution_3:
另一个思路参考了题解的第二个思路
在最低一位加上K
同时对将最后一个数量级上的数字放入此位
之后通过将K减去一个数量级和判断A中增加一个数量级的数字
重复以上过程
同时如果K的数量级比A大
则在A的左侧(更大的数量级上)放上一个零占位重复以上的过程
最后将上端队列A转换为列表输出
Code_3:
class Solution:
def addToArrayForm(self, A: List[int], K: int) -> List[int]:
i = len(A) - 1
A = collections.deque(A)
while K:
A[i] += K
K, A[i] = A[i] // 10, A[i] % 10
i -= 1
if i < 0 and K:
A.appendleft(0)
i = 0
return list(A)
Result_3: