数字列表加法操作相关题目描述及相关代码
This commit is contained in:
43
某大厂算法题库/数字列表加法操作/数字列表加法操作.py
Normal file
43
某大厂算法题库/数字列表加法操作/数字列表加法操作.py
Normal file
@@ -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)
|
||||
31
某大厂算法题库/数字列表加法操作/说明.md
Normal file
31
某大厂算法题库/数字列表加法操作/说明.md
Normal file
@@ -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. 如果两个数字列表长度不同,将为完成计算的插入到前面,并检查进位;
|
||||
|
||||
逻辑图如下:
|
||||
|
||||
<img src="file:///Users/wangyu/Library/Application%20Support/marktext/images/2026-01-08-17-08-29-image.png" title="" alt="" width="518">
|
||||
|
||||
|
||||
Reference in New Issue
Block a user