989. 数组形式的整数加法

对于非负整数 X 而言,X 的数组形式是每位数字按从左到右的顺序形成的数组。例如,如果 X = 1231,那么其数组形式为 [1,2,3,1]。

给定非负整数 X 的数组形式 A,返回整数 X+K 的数组形式。


链接:https://leetcode-cn.com/problems/add-to-array-form-of-integer
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

示例 1:

输入:A = [1,2,0,0], K = 34
输出:[1,2,3,4]
解释:1200 + 34 = 1234
示例 2:

输入:A = [2,7,4], K = 181
输出:[4,5,5]
解释:274 + 181 = 455
示例 3:

输入:A = [2,1,5], K = 806
输出:[1,0,2,1]
解释:215 + 806 = 1021
示例 4:

输入:A = [9,9,9,9,9,9,9,9,9,9], K = 1
输出:[1,0,0,0,0,0,0,0,0,0,0]
解释:9999999999 + 1 = 10000000000

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/add-to-array-form-of-integer
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

提示:

1、1 <= A.length <= 10000
2、0 <= A[i] <= 9
3、0 <= K <= 10000
4、如果 A.length > 1,那么 A[0] != 0

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/add-to-array-form-of-integer
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

思路

把这个数加到最后一位,把结果的余数保存,舍弃最后一位,再加到倒数第二位,余数保存,舍弃最后一位,依次类推。直到这个数为0。

代码

class Solution {
public:
// vector<int> addToArrayForm(vector<int>& A, int K) {
// vector<int> K_vec;
// int i=0;
// while(k>0)
// {
// K_vec[i]=K%10;
// K/=10;
// i++;
// }//第一位是个位,第二位是十位。。。。
// //翻转,让个位在最后

// reverse(K_vec.begin(),K_vec.end());
// int carry=0;//定义进位初始值为0
// vector<int> res(max(K_vec.size(),A.size())+1);
// int len_res=res.size();
// int len_A=A.size();
// int len_K=K_vec.size();

// //给K_vec和A在前面补上0


// int p_A=len_A-1,p_K=len_K-1;
// for(int i=len_res-1;i>=0;i--)
// {
// res[i]=(carry+A[p_A]+A[p_K])%10;
// carry=(carry+A[p_A]+A[p_K])/10;
// p_K--;
// p_A--;
// }


// }

vector<int> addToArrayForm(vector<int>& A, int K) {
vector<int> res;
int lasrNum=K,i=A.size()-1;
while(i>=0||lasrNum>0)
{
if(i>=0){
lasrNum+=A[i--];
}
res.push_back(lasrNum%10);
lasrNum/=10;
}

reverse(res.begin(),res.end());
return res;

}
};