题目:
对于非负整数 X 而言,X 的数组形式是每位数字按从左到右的顺序形成的数组。例如,如果 X = 1231,那么其数组形式为 [1,2,3,1]。
给定非负整数 X 的数组形式 A,返回整数 X+K 的数组形式。
提示:
- 1 <= A.length <= 10000
- 0 <= A[i] <= 9
- 0 <= K <= 10000
- 如果 A.length > 1,那么 A[0] != 0
示例 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
题解:
由于A的长度太大,所以没法用整型来进行计算处理。在网上白嫖到一个方法,就是让输入的K与数组A的最后一位数进行相加,然后将取模得到的数remind放入到答案数组中,然后K整除10,反复操作。但是可能会出现数值K的值会比A的“值”要大,所以要留意一下最后K是否需要插入。(在一开始使用vector的insert方法时,发现时间复杂度太高了,所以需要修改)
代码
class Solution {
public:
vector<int> addToArrayForm(vector<int>& A, int K) {
vector<int> ans;
int len = A.size();
for(int i = len - 1;i >= 0;i--){
K += A[i];
int remind = K % 10;
ans.insert(ans.begin(),remind);
K /= 10;
}
while(K){
int remind = K % 10;
ans.insert(ans.begin(),remind);
K /= 10;
}
return ans;
}
};