解题思路:
(1)先将K划分为数组,再使用十进制加法,记住存储进位
(2)依次判断从个位开始两个数相加,再加上进位,是否大于10(是否需要进位)
class Solution {
public:
vector<int> addToArrayForm(vector<int>& A, int K) {
vector<int> k,v;
while(K>0) {
k.push_back(K%10);
K/=10;
}
reverse(k.begin(),k.end());
int i=A.size()-1,j=k.size()-1;
int c=0; // 进位
while(i>=0&&j>=0) {
if(A[i]+k[j]+c>=10) {
v.push_back(A[i]+k[j]+c-10);
c=1;
} else {
v.push_back(A[i]+k[j]+c);
c=0;
}
i--;j--;
}
// A过长
while(i>=0) {
if(A[i]+c>=10) {
v.push_back(A[i]+c-10);
c=1;
} else {
v.push_back(A[i]+c);
c=0;
}
i--;
}
// k过长
while(j>=0) {
if(k[j]+c>=10) {
v.push_back(k[j]+c-10);
c=1;
} else {
v.push_back(k[j]+c);
c=0;
}
j--;
}
// 首位是否加1
if(c==1) v.push_back(1);
reverse(v.begin(),v.end());
return v;
}
};