题目

原题链接:989. 数组形式的整数加法


整数的 数组形式 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Solution {
public List<Integer> addToArrayForm(int[] num, int k) {
List<Integer> ans = new ArrayList<>();
for(int n : num){
ans.add(n);
}
int n = ans.size()-1;
int temp = 0;
while(k > 0 || temp != 0){
if(n >= 0){
temp = ans.get(n) + (k%10) + temp;
ans.set(n,temp%10);
} else {
temp = (k%10) + temp;
ans.add(0,temp%10);
}
k/=10;
temp/=10;
n--;
}
return ans;
}
}

其实上面的代码不用先将数组转化成列表,直接add就行了,稍微有点多此一举。不过set()的时间成本比add(int index,E e)小,如果只是add()当然add()更优了。