Topic
- Array
Description
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
Analysis
略
Submission
import java.util.LinkedList;
import java.util.List;
public class AddToArrayFormOfInteger {
public List<Integer> addToArrayForm(int[] A, int K) {
List<Integer> result = new LinkedList<>();
int index = A.length - 1, carry = 0;
while (index >= 0 || K > 0 || carry == 1) {
int a = index < 0 ? 0 : A[index--];
int b = K - (K / 10) * 10;
K /= 10;
int s = a + b + carry;
result.add(0, s - (carry = s / 10) * 10);
}
return result;
}
}
Test
import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.*;
import java.util.Arrays;
import org.junit.Test;
public class AddToArrayFormOfIntegerTest {
@Test
public void test() {
AddToArrayFormOfInteger obj = new AddToArrayFormOfInteger();
assertThat(obj.addToArrayForm(new int[] { 1, 2, 0, 0 }, 34), is(Arrays.asList(1, 2, 3, 4)));
assertThat(obj.addToArrayForm(new int[] { 2, 7, 4 }, 181), is(Arrays.asList(4, 5, 5)));
assertThat(obj.addToArrayForm(new int[] { 2, 1, 5 }, 806), is(Arrays.asList(1, 0, 2, 1)));
assertThat(obj.addToArrayForm(new int[] { 9, 9, 9, 9, 9, 9, 9, 9, 9, 9 }, 1), //
is(Arrays.asList(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)));
}
}