Thursday, October 15, 2020

LeetCode [989] Add to Array-Form of Integer

 989. Add to Array-Form of Integer

Easy

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. 1 <= A.length <= 10000
    2. 0 <= A[i] <= 9
    3. 0 <= K <= 10000
    4. If A.length > 1, then A[0] != 0
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    class Solution {
        public List<Integer> addToArrayForm(int[] A, int K) {
            List<Integer> B = new ArrayList<>();
            while(K>0){
                B.add(K%10);
                K = K/10;
            }
    
            List<Integer> ret = new ArrayList<>();
            int c = 0, nb = B.size(), j = 0;
            for(int i=A.length-1; i>=0; --i, ++j){
                int r = A[i]+c;
                if(j<nb) r += B.get(j);
                ret.add(r%10);
                c = r/10;
            }
            
            while(j<nb){
                int r = B.get(j++) + c;
                ret.add(r%10);
                c = r/10;
            }
            if(c>0) ret.add(c);
    
            Collections.reverse(ret);
            return ret;
        }
    }
    

    No comments:

    Post a Comment