
正文
LC 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 <= A.length <= 10000 -
0 <= A[i] <= 9 -
0 <= K <= 10000 -
If
A.length > 1, thenA[0] != 0
Runtime: 136 ms, faster than 100.00% of C++ online submissions for Add to Array-Form of Integer.
Memory Usage: 11.9 MB, less than 100.00% of C++ online submissions for Add to Array-Form of Integer.
class Solution {
public:
vector<int> addToArrayForm(vector<int>& A, int K) {
vector<int> ka = itoarray(K);
for(int a : ka) cout << a << endl;
reverse(A.begin(), A.end());
vector<int> ret;
int endi = max(A.size(), ka.size());
int add1, add2, sleft, sj;
sj = ;
for(int i=; i<endi; i++) {
add1 = add2 = sleft = ;
if(i < A.size()) add1 = A[i];
if(i < ka.size()) add2 = ka[i];
sleft = sj + add1 + add2;
if(sleft >= ) {sj = ; sleft %= ;}
else sj = ;
ret.push_back(sleft);
}
if(sj == ) ret.push_back();
reverse(ret.begin(), ret.end());
return ret;
}
vector<int> itoarray(int K) {
vector<int> a;
while(K != ) {
a.push_back(K % );
K /= ;
}
return a;
}
};






