这道题还是要写一下
思路:首先想到的就是把数组转换成数字,直接相加,因为A的长度只有10000,但后来明显越界了,行不通;后来想到把K逐位加到A上,但很复杂,最终采用以下方法;
vector<int> addToArrayForm(vector<int> &A, int K)
{
int len = A.size();
if (K == 0)
return A;
int flag = 0; //进位
int index = len - 1;
vector<int> res;
// 逐位相加,flag存储进位
while (K > 0 || index >= 0)
{
int a = 0, b = 0;
if (K >= 0)
a = K % 10;
if (index >= 0)
b = A[index];
int sum = a + b + flag;
flag = sum / 10;
res.push_back(sum % 10);
K /= 10;
index--;
}
// 注意不要丢了最后的进位
if (flag)
res.push_back(1);
// 翻转,实践证明push_back比insert快了上千倍,所以这了我先push_back,然后翻转
reverse(res.begin(), res.end());
return res;
}