# 989. Add to Array-Form of Integer

For a non-negative integer `X`, the  array-form of`X`  is an array of its digits in left to right order.  For example, if `X = 1231`, then the array form is `[1,2,3,1]`.

Given the array-form `A` of a non-negative integer `X`, return the array-form of the integer `X+K`.

Example 1:

``````Input: A = [1,2,0,0], K = 34
Output: [1,2,3,4]
Explanation: 1200 + 34 = 1234
``````

Example 2:

``````Input: A = [2,7,4], K = 181
Output: [4,5,5]
Explanation: 274 + 181 = 455
``````

Example 3:

``````Input: A = [2,1,5], K = 806
Output: [1,0,2,1]
Explanation: 215 + 806 = 1021
``````

Example 4:

``````Input: A = [9,9,9,9,9,9,9,9,9,9], K = 1
Output: [1,0,0,0,0,0,0,0,0,0,0]
Explanation: 9999999999 + 1 = 10000000000
``````

Note：

1. `1 <= A.length <= 10000`
2. `0 <= A[i] <= 9`
3. `0 <= K <= 10000`
4. If `A.length > 1`, then `A[0] != 0`

``````class Solution {
public:
vector<int> addToArrayForm(vector<int>& A, int K) {
vector<int> res;
for (int i = (int)A.size() - 1; i >= 0; --i) {
res.insert(res.begin(), (A[i] + K) % 10);
K = (A[i] + K) / 10;
}
while (K > 0) {
res.insert(res.begin(), K % 10);
K /= 10;
}
return res;
}
};
``````

``````class Solution {
public:
vector<int> addToArrayForm(vector<int>& A, int K) {
int n = A.size(), i = n - 1, carry = 0;
while (K > 0 || carry > 0) {
int num = K % 10 + carry;
if (i >= 0) num += A[i];
carry = num / 10;
num %= 10;
if (i >= 0) {
A[i] = num;
--i;
} else {
A.insert(A.begin(), num);
}
K /= 10;
}
return A;
}
};
``````

Github 同步地址:

https://github.com/grandyang/leetcode/issues/989

Plus One