解題思路:
(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;
}
};