989. Add to Array-Form of Integer #
Problem #
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 <= 100000 <= A[i] <= 90 <= K <= 10000- If
A.length > 1, thenA[0] != 0
Problem Summary #
For a non-negative integer X, the array-form of X is an array formed by its digits in left-to-right order. For example, if X = 1231, then its 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.
Solution Approach #
- Easy problem: compute the sum of 2 non-negative integers. Continuously carry during the accumulation process, and when finally outputting to the array, remember to reverse the order, so that the higher digits of the number are placed at smaller array indices.
Code #
package leetcode
func addToArrayForm(A []int, K int) []int {
res := []int{}
for i := len(A) - 1; i >= 0; i-- {
sum := A[i] + K%10
K /= 10
if sum >= 10 {
K++
sum -= 10
}
res = append(res, sum)
}
for ; K > 0; K /= 10 {
res = append(res, K%10)
}
reverse(res)
return res
}
func reverse(A []int) {
for i, n := 0, len(A); i < n/2; i++ {
A[i], A[n-1-i] = A[n-1-i], A[i]
}
}