From 02d647652ea50f4dff578dd4dd86ee85d5f09585 Mon Sep 17 00:00:00 2001 From: wangyu-wayne <493621511@qq.com> Date: Fri, 9 Jan 2026 12:44:40 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E5=AD=97=E5=88=97=E8=A1=A8=E5=8A=A0?= =?UTF-8?q?=E6=B3=95=E6=93=8D=E4=BD=9C=E7=9B=B8=E5=85=B3=E9=A2=98=E7=9B=AE?= =?UTF-8?q?=E6=8F=8F=E8=BF=B0=E5=8F=8A=E7=9B=B8=E5=85=B3=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../数字列表加法操作/数字列表加法操作.py | 43 +++++++++++++++++++ 某大厂算法题库/数字列表加法操作/说明.md | 31 +++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 某大厂算法题库/数字列表加法操作/数字列表加法操作.py create mode 100644 某大厂算法题库/数字列表加法操作/说明.md diff --git a/某大厂算法题库/数字列表加法操作/数字列表加法操作.py b/某大厂算法题库/数字列表加法操作/数字列表加法操作.py new file mode 100644 index 0000000..8a02b84 --- /dev/null +++ b/某大厂算法题库/数字列表加法操作/数字列表加法操作.py @@ -0,0 +1,43 @@ +num1 = [1, 8, 9] +num2 = [2, 1] +res = [] + +carry = 0 +i = -1 +lens1 = len(num1) +lens2 = len(num2) + +min_index = min(lens1, lens2) * -1 + +while i >= min_index: + val = num1[i] + num2[i] + carry + if val >= 10: + carry = 1 + res.insert(0, val - 10) + else: + carry = 0 + res.insert(0, val) + i -= 1 + +if lens1 != lens2: + if lens1 > lens2: + last = num1 + min_index = lens1 * -1 + else: + last = num2 + min_index = lens2 * -1 + + while i >= min_index: + val = last[i] + carry + if val >= 10: + carry = 1 + res.insert(0, val-10) + else: + carry = 0 + res.insert(0, val) + i -= 1 + +if carry: + res.insert(0, carry) + +print(res) diff --git a/某大厂算法题库/数字列表加法操作/说明.md b/某大厂算法题库/数字列表加法操作/说明.md new file mode 100644 index 0000000..619d14a --- /dev/null +++ b/某大厂算法题库/数字列表加法操作/说明.md @@ -0,0 +1,31 @@ +# 数字列表加法操作 + +## 需求 + +给定一个数字列表,每个数字范围:0-9; + +数字列表: + +    数字189使用列表表示:num1 = [1, 8, 9] + +    数字21使用列表表示:num2 = [2, 1] + +    num1与num2相加结果: [2, 1, 0] + +## 题目分析 + +在C,C++等语言中,受限于计算机位数,整数最大值有限制;为了防止越界,导致计算结果错误,会使用巨型数组替代数字进行计算; + +计算规则: + +    1. 计算最低位,并检查是否有进位; + +    2. 计算次低位,检查是否有进位; + +    3. 如果两个数字列表长度不同,将为完成计算的插入到前面,并检查进位; + +逻辑图如下: + + + +