链接
https://leetcode-cn.com/problems/add-to-array-form-of-integer/
耗时
解题:12 min
题解:8 min
题意
对于非负整数 X 而言,X 的数组形式是每位数字按从左到右的顺序形成的数组。例如,如果 X = 1231,那么其数组形式为 [1,2,3,1]。
给定非负整数 X 的数组形式 A,返回整数 X+K 的数组形式。
思路
模拟加法运算,因为可能存在进位,所以结果数组从低位到高位 push,计算完成后再翻转结果数组即可。 详见代码。
时间复杂度: O ( m a x ( A . l e n g t h , K . l e n g t h ) ) O(max(A.length, K.length)) O(max(A.length,K.length))
AC代码
class Solution {
public:
vector<int> addToArrayForm(vector<int>& A, int K) {
int n = A.size();
vector<int> res;
int i = n-1, carry = 0;
while(i >= 0 || K > 0 || carry > 0) {
int x = (i >= 0) ? A[i] : 0;
int num = x + K%10 + carry;
res.push_back(num%10);
carry = num/10;
K /= 10;
i--;
}
reverse(res.begin(), res.end());
return res;
}
};