文章目錄
- 題目
- 題解
題目
對于非負整數 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
提示:
1 <= A.length <= 100000 <= A[i] <= 90 <= K <= 10000如果 A.length > 1,那么 A[0] != 0
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/add-to-array-form-of-integer
著作權歸領扣網路所有,商業轉載請聯系官方授權,非商業轉載請注明出處,
題解
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;
}
}
4ms 39.9MB
詳情參考代碼注釋,舉例說明:
例如陣列
A
:
[
1
,
0
,
2
,
3
]
A:[1,0,2,3]
A:[1,0,2,3],
K
:
1024
K:1024
K: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:102
K: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:10
K: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:1
K: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:0
K:0
K
K
K不滿足
K
>
0
K>0
K>0的條件,退出回圈,
反轉陣列,得到結果
r
e
s
u
l
t
:
[
2
,
0
,
4
,
7
]
result:[2,0,4,7]
result:[2,0,4,7]
更多題解點擊此處
學習交流q群:470464545,大家一起學習進步,CSDN博客:lolly1023
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/251750.html
標籤:java
