題目
對於非負整數 X 而言,X 的陣列形式是每位數字按從左到右的順序形成的陣列。例如,如果 X = 1231,那麼其陣列形式為[1,2,3,1]。
給定非負整數 X 的陣列形式A,返回整數X+K的陣列形式。
示例 1:
輸入:A = [1,2,0,0], K = 34輸出:[1,2,3,4]解釋:1200 + 34 = 1234123
示例 2:
輸入:A = [2,7,4], K = 181輸出:[4,5,5]解釋:274 + 181 = 455123
示例 3:
輸入:A = [2,1,5], K = 806輸出:[1,0,2,1]解釋:215 + 806 = 1021123
示例 4:
輸入:A = [9,9,9,9,9,9,9,9,9,9], K = 1輸出:[1,0,0,0,0,0,0,0,0,0,0]解釋:9999999999 + 1 = 10000000000123
提示:
題解class Solution { public List<Integer> addToArrayForm(int[] A, int K) { // 返回結果陣列 List<Integer> result = new ArrayList<Integer>(); // 初始陣列長度 int length = A.length; // 從末尾加,加到初始第一位,或者加到K沒了,陣列下標每次向前挪一位,K每次刪除個位(/10的作用) for (int i = length - 1;i >= 0 || K > 0;i--, K/=10) { // 如果陣列還沒到頭 if (i >= 0) { // K=當前K+當前下標陣列的值 K += A[i]; } // 求餘獲取個位 result.add(K%10); } // 反轉 Collections.reverse(result); return result; }}123456789101112131415161718192021
4ms 39.9MB詳情參考程式碼註釋,舉例說明:
例如陣列A : [ 1 , 0 , 2 , 3 ] A:[1,0,2,3]A:[1,0,2,3],K : 1024 K:1024K:1024,第一個for迴圈是,A : [ 1 , 0 , 2 , ( 3 + 1024 ) % 10 ] A:[1,0,2,(3+1024)\%10]A:[1,0,2,(3+1024)%10],結果為r e s u l t : [ 7 ] result:[7]result:[7],K : 102 K:102K:102第一個for迴圈是,A : [ 1 , 0 , ( 2 + 102 ) % 10 , 3 ] A:[1,0,(2+102)\%10,3]A:[1,0,(2+102)%10,3],結果為r e s u l t : [ 7 , 4 ] result:[7,4]result:[7,4],K : 10 K:10K:10第一個for迴圈是,A : [ 1 , ( 0 + 10 ) % 10 , 2 , 3 ] A:[1,(0+10)\%10,2,3]A:[1,(0+10)%10,2,3],結果為r e s u l t : [ 7 , 4 , 0 ] result:[7,4,0]result:[7,4,0],K : 1 K:1K:1第一個for迴圈是,A : [ ( 1 + 1 ) % 10 , 0 , 2 , 3 ] A:[(1+1)\%10,0,2,3]A:[(1+1)%10,0,2,3],結果為r e s u l t : [ 7 , 4 , 0 , 2 ] result:[7,4,0,2]result:[7,4,0,2],K : 0 K:0K:0K KK不滿足K > 0 K>0K>0的條件,退出迴圈。反轉陣列,得到結果r e s u l t : [ 2 , 0 , 4 , 7 ] result:[2,0,4,7]result:[2,0,4,7]
本文出處:csdn博主lolly1023