方法1:把k看作是一个载体,当做进位
class Solution {
public List<Integer> addToArrayForm(int[] A, int K) {
LinkedList<Integer> l=new LinkedList();
for(int i=A.length-1;i>=0;i--){
l.add(0,(K+A[i])%10);
K=(K+A[i])/10;
}
while(K>0){
l.add(0,K%10);
K=K/10;
}
return l;
}
}
方法2:。。自己能看懂,太差了
class Solution {
public List<Integer> addToArrayForm(int[] A, int K) {
//把k转数组,进行数组相加
int[] k=new int[5];
LinkedList<Integer> l=new LinkedList();
int i=4;
while(K>0){
k[i]=K%10;
K=K/10;
i--;
}
int h=1+i;
i=4;
//i+1是数组k长度
int j=A.length-1;
int jinwei=0;
while(j>=0&&i>=h){
l.add(0,(k[i]+A[j]+jinwei)%10);
jinwei=(k[i]+A[j]+jinwei)/10;
j--;
i--;
}
while(j>=0){
l.add(0,(A[j]+jinwei)%10);
jinwei=(A[j]+jinwei)/10;
j--;
}
while(i>=h){
l.add(0,(k[i]+jinwei)%10);
jinwei=(k[i]+jinwei)/10;
i--;
}
if(jinwei>0){
l.add(0,jinwei);
}
return l;
}
}
如果用java的字符串转数字,就是把数组》字符串》数字 然后与k相加是不行的,超过了int范围,如果用大数类是可以的,不过有点。。。