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. 如果两个数字列表长度不同,将为完成计算的插入到前面,并检查进位; + +逻辑图如下: + + + +