LeetCode 题解工作台

数组形式的整数加法

整数的 数组形式 num 是按照从左到右的顺序表示其数字的数组。 例如,对于 num = 1321 ,数组形式是 [1,3,2,1] 。 给定 num ,整数的 数组形式 ,和整数 k ,返回 整数 num + k 的 数组形式 。 示例 1: 输入: num = [1,2,0,0], k = 34…

category

2

题型

code_blocks

6

代码语言

hub

3

相关题

当前训练重点

简单 · 数组·数学

bolt

答案摘要

我们可以从数组的最后一位开始,将数组的每一位与 相加,然后将 除以 ,并将余数作为当前位的值,将商作为进位。一直循环,直到数组遍历完并且 $k = 0$。最后将答案数组反转即可。 时间复杂度 ,其中 表示 的长度。忽略答案数组的空间消耗,空间复杂度 。

Interview AiBox logo

Interview AiBox 实时 AI 助手,陪你讲清 数组·数学 题型思路

试试 AiBox 面试助手arrow_forward
description

题目描述

整数的 数组形式  num 是按照从左到右的顺序表示其数字的数组。

  • 例如,对于 num = 1321 ,数组形式是 [1,3,2,1]

给定 num ,整数的 数组形式 ,和整数 k ,返回 整数 num + k数组形式

 

示例 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

示例 3:

输入:num = [2,1,5], k = 806
输出:[1,0,2,1]
解释:215 + 806 = 1021

 

提示:

  • 1 <= num.length <= 104
  • 0 <= num[i] <= 9
  • num 不包含任何前导零,除了零本身
  • 1 <= k <= 104
lightbulb

解题思路

方法一:模拟

我们可以从数组的最后一位开始,将数组的每一位与 kk 相加,然后将 kk 除以 1010,并将余数作为当前位的值,将商作为进位。一直循环,直到数组遍历完并且 k=0k = 0。最后将答案数组反转即可。

时间复杂度 O(n)O(n),其中 nn 表示 num\textit{num} 的长度。忽略答案数组的空间消耗,空间复杂度 O(1)O(1)

1
2
3
4
5
6
7
8
9
10
11
class Solution:
    def addToArrayForm(self, num: List[int], k: int) -> List[int]:
        ans = []
        i = len(num) - 1
        while i >= 0 or k:
            k += 0 if i < 0 else num[i]
            k, x = divmod(k, 10)
            ans.append(x)
            i -= 1
        return ans[::-1]
speed

复杂度分析

指标
时间complexity is O(max(N, log K)) because each digit of num and each digit of k is processed once. Space complexity is O(max(N, log K)) due to storing the result array and any intermediate digits.
空间O(\max(N, \log K))
psychology

面试官常问的追问

外企场景
  • question_mark

    Expect candidates to handle carry propagation correctly for varying array lengths.

  • question_mark

    Check if the solution avoids converting the array entirely into an integer to prevent overflow.

  • question_mark

    Look for understanding of digit-wise addition and array reversal to maintain correct order.

warning

常见陷阱

外企场景
  • error

    Forgetting to reverse the result array at the end leading to incorrect digit order.

  • error

    Not handling remaining carry after finishing array traversal, which can produce missing leading digits.

  • error

    Assuming k fits into integer conversion, which fails for large num arrays, violating constraints.

swap_horiz

进阶变体

外企场景
  • arrow_right_alt

    Adding two array-form integers instead of an integer k, increasing the need for synchronized digit iteration.

  • arrow_right_alt

    Subtracting an integer from array-form integer, testing handling of borrow instead of carry.

  • arrow_right_alt

    Supporting negative k, requiring careful treatment of sign and potential negative results in array form.

help

常见问题

外企场景

数组形式的整数加法题解:数组·数学 | LeetCode #989 简单