https://leetcode.com/problems/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
代码:
class Solution { public: vector<int> addToArrayForm(vector<int>& A, int K) { int n = A.size(); vector<int> ans; string words1 = toString(K), words2 = ""; for(int i = 0; i < n; i ++) words2 += ('0' + A[i]); string sum = addStrings(words1, words2); for(int i = 0; i < sum.length(); i ++) ans.push_back(sum[i] - '0'); return ans; } string toString(int x) { string s = ""; while(x) { s += (x % 10) + '0'; x /= 10; } for(int i = 0; i < s.length() / 2; i ++) swap(s[i], s[s.length() - i - 1]); return s; } string addStrings(string num1, string num2) { string c = ""; int len1 = num1.length(); int len2 = num2.length(); int len = max(len1, len2); for(int i = len1; i < len; i ++) num1 = "0" + num1; for(int i = len2; i < len; i ++) num2 = "0" + num2; int ok = 0; for(int i = len - 1; i >= 0; i --) { char temp = num1[i] + num2[i] - '0' + ok; if(temp > '9') { ok = 1; temp -= 10; } else ok = 0; c = temp + c; } if(ok) c = "1" + c; return c; } };
数组模拟大数加法