LeetCode每日一題: 陣列形式的整數加法(No.989)

胖宅老鼠發表於2019-04-24

題目:陣列形式的整數加法


對於非負整數 X 而言,X 的陣列形式是每位數字按從左到右的順序形成的陣列。
例如,如果 X = 1231,那麼其陣列形式為 [1,2,3,1]。
給定非負整數 X 的陣列形式 A,返回整數 X+K 的陣列形式。
複製程式碼

示例:


輸入:A = [1,2,0,0], K = 34
輸出:[1,2,3,4]
解釋:1200 + 34 = 1234

輸入:A = [2,7,4], K = 181
輸出:[4,5,5]
解釋:274 + 181 = 455

輸入:A = [2,1,5], K = 806
輸出:[1,0,2,1]
解釋:215 + 806 = 1021

輸入: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 = 10000000000
複製程式碼

思考:


  這道題可以逐位將數字加在一起。
  例如274和181,可以先計算2+1,7+8,4+1。當相加結果大於等於10,就要進位,7+8=15將進位的1加到前一位的計算中去。
複製程式碼

實現:


class Solution {
public List<Integer> addToArrayForm(int[] A, int K) {
    int length = A.length;
    int cur = K;
    List<Integer> res = new ArrayList();
    int i = length;
    while (--i >= 0 || cur > 0) {
        if (i >= 0)
            cur += A[i];
        res.add(cur % 10);
        cur /= 10;
    }
    Collections.reverse(res);
    return res;
}
}複製程式碼

相關文章