返回
LeetCode 989 题:数组形式的整数加法 - 揭秘巧妙技巧
见解分享
2023-11-21 19:08:10
踏破 leetcode 之旅
在 LeetCode 的征途上,989 题「数组形式的整数加法」如同一道分水岭,考验着程序员的算法能力和对细节的把握。这道题看似简单,实则暗藏玄机,若想化繁为简,就必须掌握巧妙的技巧。
数组整数加法之术
题目给定两个数组,分别代表两个非负整数。每个数组中的数字按逆序排列,代表对应位上的数字。我们的任务是将这两个数组相加,并返回一个新数组,代表相加后的结果。
解决这道题的关键在于理解数组形式整数加法的本质。首先,我们逐位进行加法,并记录进位。如果当前位上的加法结果大于等于 10,就需要将进位加到下一位的加法中。其次,我们从数组末尾开始遍历,因为高位数字的进位会影响低位数字的加法。
Python 实现:步步为营
def addToArrayForm(num1, num2):
# 创建一个新数组存储结果
result = []
# 逐位加法,记录进位
carry = 0
i = len(num1) - 1
j = len(num2) - 1
# 循环遍历数组
while i >= 0 or j >= 0 or carry:
# 取出当前位上的数字
a = num1[i] if i >= 0 else 0
b = num2[j] if j >= 0 else 0
# 计算当前位上的和
sum = a + b + carry
# 更新进位
carry = sum // 10
# 取当前位上的结果
result.append(sum % 10)
# 指针后移
i -= 1
j -= 1
# 返回结果数组
return result[::-1]
进阶剖析:巧用内置函数
Python 语言提供了许多内置函数,可以简化编码过程。利用这些函数,我们可以进一步优化代码:
def addToArrayForm(num1, num2):
# 将数组转换为整数
n1 = int(''.join(map(str, num1)))
n2 = int(''.join(map(str, num2)))
# 相加并转换为数组
result = list(str(n1 + n2))
# 返回结果数组
return [int(x) for x in result]
这种方法巧妙地将数组转换成了整数,然后直接进行相加。最后,再将结果转换为数组即可。
总结:化繁为简
解决 LeetCode 989 题的关键在于理解数组形式整数加法的本质,并掌握逐位加法和进位处理的技巧。通过巧用 Python 的内置函数,我们可以进一步优化代码,让求解过程更加优雅高效。