989.数组形式的整数加法
思路一:诸位相加
首先遍历A数组的各个位置,
其次,如果K比A长,添加K的各个位置
最后,如果最后还有一个进位。
class Solution {
public List<Integer> addToArrayForm(int[] A, int K) {
List<Integer> res = new LinkedList<>();
int add1=0;
for(int i=A.length-1;i>=0;i--){
int tmp = A[i]+K%10+add1;
add1 = tmp/10;
res.addLast(tmp%10);
K = K/10;
}
return res;
}
}
思路二:保留K的值
以[1,2,3]+912为例子,
- 首先,912+3=915,%10取余数5作为当前位置的数字,将912/10=91作为进位放到下一位。
- 在下面的代码中,我们把K当作成了进位。
class Solution {
public List<Integer> addToArrayForm(int[] A, int K) {
List<Integer> res = new LinkedList<>();
int n = A.length;
for(int i=n-1;i>=0||K>0;i--,K/=10){
int tmp = 0;
// 如果A中还有元素
if(i>=0)
tmp+=A[i];
res.add((tmp+K)%10);
K = (tmp+K); //因为每次循环K/=10
}
Collections.reverse(res);
return res;
}
}
收获:
- 使用
Collections.reverse
对Arrays进行倒序输出。 - 新的for的写法:
for(int i=n-1;i>=0||K>0;i--,K/=10)