0989. 数组形式的整数加法
大约 2 分钟
---
0989. 数组形式的整数加法
- 标签:数组、数学
- 难度:简单
题目链接
题目大意
描述:
整数的「数组形式」 是按照从左到右的顺序表示其数字的数组。
- 例如,对于 ,数组形式是 。
给定 ,整数的「数组形式」,和整数 。
要求:
返回 整数 的「数组形式」。
说明:
- 。
- 。
- 不包含任何前导零,除了零本身。
- 。
示例:
- 示例 1:
输入:num = [1,2,0,0], k = 34
输出:[1,2,3,4]
解释:1200 + 34 = 1234- 示例 2:
输入:num = [2,7,4], k = 181
输出:[4,5,5]
解释:274 + 181 = 455解题思路
思路 1:模拟加法
思路
这道题要求将数组形式的整数与整数 相加,返回数组形式的结果。我们可以模拟加法的过程:
- 从数组 的最后一位开始,与 的个位相加。
- 计算当前位的和以及进位。
- 将当前位的结果插入到结果数组的开头。
- 更新 为进位值( 除以 )。
- 继续处理下一位,直到数组遍历完且 为 。
代码
class Solution:
def addToArrayForm(self, num: List[int], k: int) -> List[int]:
res = []
n = len(num)
i = n - 1 # 从数组最后一位开始
# 当数组还有位数或 k 不为 0 时继续
while i >= 0 or k > 0:
# 获取当前位的数字
digit = num[i] if i >= 0 else 0
# 计算当前位的和
total = digit + k % 10
# 将当前位结果插入到结果数组开头
res.append(total % 10)
# 计算进位
k = k // 10 + total // 10
i -= 1
# 结果是逆序的,需要反转
return res[::-1]复杂度分析
- 时间复杂度:,其中 是数组 的长度, 是整数 的位数。需要遍历所有位数。
- 空间复杂度:,不考虑结果数组的空间,只使用了常数个额外变量。