第一个方法暴力
class Solution:
def addToArrayForm(self, num, k):
le=len(num)-1
ans=0
for i in num:
ans=ans+i*pow(10,le)
le=le-1
res=ans+k
ls=[]
while res:
ls.append(res%10)
res=res//10
return ls[::-1]
第二个逐位相加
让我们逐位将数字加在一起。例如计算 123+912,我们从低位到高位依次计算 3+2、2+1 和 1+9。任何时候,若加法的结果大于等于 10,把进位的 1 加入到下一位的计算中,所以最终结果为 1035。
公式
当前位 = (A 的当前位 + B 的当前位 + 进位carry) % 10
注意,AB两数都加完后,最后判断一下进位 carry, 进位不为 0 的话加在前面。
加法模板:
while ( A 没完 || B 没完)
A 的当前位
B 的当前位
和 = A 的当前位 + B 的当前位 + 进位carry
当前位 = 和 % 10;
进位 = 和 / 10;
A=A/10
B=B/10
判断还有进位吗
class Solution:
def addToArrayForm(self, num, k):
le=len(num)-1
carry=0#进位
ls=[]
while le>=0 or k:
if le<0:
x=0
else:
x=num[le]
if k==0:
y=0
else:
y=k%10
#当前位
sum=x+y+carry
carry=sum//10
k=k//10
le-=1
ls.append(sum%10)
if carry:
ls.append(carry)
return ls[::-1]