文章目录
-
- 题目
- 题解
题目
对于非负整数 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 <= 10000
0 <= A[i] <= 9
0 <= 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