返回

数组加法的巧妙算法:LeetCode 989 解密

闲谈

LeetCode 989:问题概述

LeetCode 989 要求您将两个整数表示为数组的形式,并计算它们的和。这些数组中的元素代表数字,其顺序从个位数到最高有效位依次排列。例如,数组 [1,2,3] 表示整数 123。

巧妙算法:逐步解析

为了解决这个问题,我们引入了一个巧妙的算法:

  1. 反转数组: 将两个输入数组反转,以便最低有效位与数组的第一个元素对齐。

  2. 逐位相加: 从最低有效位开始,逐位相加两个数组中的元素。

  3. 处理进位: 如果相加结果超过 9,则将进位记为 1 并添加到下一位的和中。

  4. 逆转结果: 对相加结果数组进行逆转,还原其正确的数字表示。

代码示例

以下 Python 代码演示了上述算法:

def addToArrayForm(num1, num2):
    # 反转数组
    num1.reverse()
    num2.reverse()

    # 初始化进位
    carry = 0

    # 逐位相加
    result = []
    for i in range(max(len(num1), len(num2))):
        digit1 = num1[i] if i < len(num1) else 0
        digit2 = num2[i] if i < len(num2) else 0
        sum = digit1 + digit2 + carry
        carry = sum // 10
        result.append(sum % 10)

    # 处理最后的进位
    if carry > 0:
        result.append(carry)

    # 逆转结果
    result.reverse()

    return result

优势与应用

该算法因其简洁性和效率而备受青睐:

  • 简单易懂: 算法步骤清晰明了,易于理解和实现。
  • 节省内存: 由于反转了输入数组,算法避免了创建新的数组,从而节省了内存消耗。
  • 泛用性强: 该算法不仅适用于 LeetCode 989,还可应用于各种涉及大数加法的场景。

总结

通过探索 LeetCode 989 问题,我们揭开了数组形式整数加法的巧妙算法。该算法将整数转换为数组并逐位相加,有效且高效。无论您是算法爱好者还是编程新手,本文提供的清晰解释和代码示例都会帮助您深入理解这一概念并将其应用到您的项目中。