Add to Array-Form of Integer
The array-form of an integer num is an array representing its digits in left to right order.
For example, for num = 1321, the array form is [1,3,2,1].
Given num, the array-form of an integer, and an integer k, return the array-form of the integer num + k.
Example 1:
Input: num = [1,2,0,0], k = 34
Output: [1,2,3,4]
Explanation: 1200 + 34 = 1234
Example 2:
Input: num = [2,7,4], k = 181
Output: [4,5,5]
Explanation: 274 + 181 = 455
Example 3:
Input: num = [2,1,5], k = 806
Output: [1,0,2,1]
Explanation: 215 + 806 = 1021
Constraints:
1 <= num.length <= 104
0 <= num[i] <= 9
num does not contain any leading zeros except for the zero itself.
1 <= k <= 104
思路一:分解整数为 list,然后模拟加法运算。代码写的有点丑,看了一下题解,感觉没必要把整数分解,直接做加法模拟,然后把结果变成 list 这样的思路代码会简洁很多
public List<Integer> addToArrayForm(int[] num, int k) {
List<Integer> list = new ArrayList<>();
while (k > 0) {
list.add(k % 10);
k /= 10;
}
int i = num.length - 1;
int j = 0;
int carry = 0;
while (i >= 0 || j < list.size()) {
int left = 0;
if (i >= 0) {
left = num[i];
}
int right = 0;
if (j < list.size()) {
right = list.get(j);
}
int val = left + right + carry;
carry = val >= 10 ? 1 : 0;
if (j < list.size()) {
list.set(j, val % 10);
} else {
list.add(val % 10);
}
i--;
j++;
}
if (carry == 1) list.add(carry);
List<Integer> result = new ArrayList<>();
for (int x = list.size() - 1; x >= 0; x--) {
result.add(list.get(x));
}
return result;
}
标签:10,989,int,list,num,easy,carry,array,leetcode
From: https://www.cnblogs.com/iyiluo/p/16841531.html