对于非负整数 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