(Easy) Add to Array-Form of Integer (LeetCode)

Description:

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
Accepted
21,041
Submissions
47,722

Solution:  

class Solution {
    public List<Integer> addToArrayForm(int[] A, int K) {
        
        List<Integer> list = new ArrayList<Integer>();
        String n = Integer.toString(K);
        
        int[] tmp_K = new int[ n.length()];
        
        int num = K;
        
        int k = n.length()-1;
        
        while(num>0){
            
            int digit = num % 10;
            
            tmp_K[k--] = digit;
            
            num = num/10;
            
        }
        
        int digit = 0;
         
        int i = 0;
        int j = 0; 
        int non_zero =0;
        for( i = n.length()-1,  j = A.length-1; i>=0&&j>=0;i--,j--){
            
            int cur = A[j] + tmp_K[i] +digit ; 
            
            digit = cur/10;
            
            list.add(0,cur%10);
            
        }
         non_zero = i>=0? i: j;
        
         int cur1 =0;
        
        System.out.println("Check"+i+" "+j+" "+non_zero);
        if(j<0){
            for(int m = non_zero; m>=0; m--){
            
                 cur1 = tmp_K[m]+digit;
                
                list.add(0, cur1 % 10);
                
                digit = cur1 /10;
            
            }
        }
        else{
             for(int m = non_zero; m>=0; m--){
            
               cur1 = A[m]+digit;
                
                list.add(0,cur1%10);
                
                digit = cur1 /10;
            
            }
            
        }
        
        if(digit>0){
            list.add(0,1);
        }
        
        return list;
           
       
    }
}

猜你喜欢

转载自www.cnblogs.com/codingyangmao/p/11419195.html
今日推荐