• 微信公众号:美女很有趣。 工作之余,放松一下,关注即送10G+美女照片!

LeetCode 989. 数组形式的整数加法

互联网 diligentman 1个月前 (01-24) 19次浏览

文章目录

    • 题目
    • 题解

题目

对于非负整数 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. 1 <= A.length <= 10000
  2. 0 <= A[i] <= 9
  3. 0 <= K <= 10000
  4. 如果 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


程序员灯塔
转载请注明原文链接:LeetCode 989. 数组形式的整数加法
喜欢 (0)