题目描述:
思路:
首先把K写成数组形式
然后把A和K相加
注意进位
代码如下:
class Solution {
public:
vector<int> addToArrayForm(vector<int>& A, int K) {
vector<int>res;
vector<int>sum;
vector<int>num;
while(K!=0){
num.push_back(K%10);
K/=10;
}
if(A.size()>num.size()){
int j=A.size()-1;
int carry=0;
for(int i=0;i<num.size();i++){
sum.push_back((num[i]+A[j]+carry)%10);
carry=(num[i]+A[j]+carry)/10;
j--;
}
for(j;j>=0;j--){
sum.push_back((carry+A[j])%10);
carry=(carry+A[j])/10;
}
if(carry!=0)
sum.push_back(carry);
}
if(A.size()<num.size()){
int j=0;
int carry=0;
for(int i=A.size()-1;i>=0;i--){
sum.push_back((A[i]+num[j]+carry)%10);
carry=(A[i]+num[j]+carry)/10;
j++;
}
for(j;j<num.size();j++){
sum.push_back((carry+num[j])%10);
carry=(carry+num[j])/10;
}
if(carry!=0)
sum.push_back(carry);
}
if(A.size()==num.size()){
int carry=0;
int j=0;
for(int i=A.size()-1;i>=0;i--){
sum.push_back((A[i]+num[j]+carry)%10);
carry=(A[i]+num[j]+carry)/10;
j++;
}
if(carry!=0)
sum.push_back(carry);
}
for(int i=sum.size()-1;i>=0;i--){
res.push_back(sum[i]);
}
return res;
}
};