[LeetCode 989] 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

 

A straightforward implementation is to convert K into an array just like A, then do the elementary-school digits by digits add up. A simpler approach is to treat K as a carry. 

Remember to use a linked list not array list to store the answer since adding at the head of a linked list takes O(1) and adding at the head of an array list takes O(N).

 1 public List<Integer> addToArrayForm(int[] A, int K) {
 2         List<Integer> res = new LinkedList<>();
 3         for (int i = A.length - 1; i >= 0; --i) {
 4             res.add(0, (A[i] + K) % 10);
 5             K = (A[i] + K) / 10;
 6         }
 7         while (K > 0) {
 8             res.add(0, K % 10);
 9             K /= 10;
10         }
11         return res;
12     }

 

posted @ 2019-02-11 07:07  Review->Improve  阅读(827)  评论(0编辑  收藏  举报