leetcode-989-easy

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;
}
posted @ 2022-10-30 16:14  iyiluo  阅读(21)  评论(0)    收藏  举报