演算法練習 陣列形式的整數加法

2021-10-17 05:03:16 字數 1147 閱讀 2927

題目:

對於非負整數 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 = 1234

示例 2:

輸入:a = [2,7,4], k = 181

輸出:[4,5,5]

解釋:274 + 181 = 455

示例 3:

輸入:a = [2,1,5], k = 806

輸出:[1,0,2,1]

解釋:215 + 806 = 1021

示例 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 = 10000000000

逐位相加法

就是把k的每一位分別和陣列a對應的元素相加,如果相加結果sum小於10,則直接存入集合,若大於10,則先將k/10後加1(相當於進製),然後把sum-10後存入集合,每一位都存入後對集合進行逆序可得最終結果。

按照這個思路寫如下**:

public list

addtoarrayform

(int

a,int k)

else

}//逆序

collections.

reverse

(list)

;return list;

}

但是執行示例3後結果為[0,2,1],檢查後發現是因為for迴圈只有a的長度個,而a組成的數和k相加後得到的數的位數大於a的長度個,因此最後一位沒有被加進集合。

可以在最後增加乙個for迴圈:

for

(;k>

0; k/=10)

如果k>0,則意味著還有元素沒有被新增進集合,直接把k的每一位數按順序新增進去。

陣列形式的整數加法

對於非負整數 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 1234 ...

陣列形式的整數加法

對於非負整數 x 而言,x 的陣列形式是每位數字按從左到右的順序形成的陣列。例如,如果 x 1231,那麼其陣列形式為 1,2,3,1 給定非負整數 x 的陣列形式 a,返回整數 x k 的陣列形式。解題思路 此題是用乙個數的陣列形式 乙個整數,返回和的陣列形式。模擬加法進行逐位相加,從低位向高位相...

陣列形式的整數加法

題目 對於非負整數 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 12...