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
A.length > 1
, then A[0] != 0
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; } }
(Easy) Add to Array-Form of Integer (LeetCode)
原文:https://www.cnblogs.com/codingyangmao/p/11419195.html