「这是我参与2022首次更文挑战的第15天,活动详情查看:2022首次更文挑战」。
题目描述:
989. 数组形式的整数加法 - 力扣(LeetCode) (leetcode-cn.com)
对于非负整数 X 而言,X 的数组形式是每位数字按从左到右的顺序形成的数组。例如,如果 X = 1231,那么其数组形式为 [1,2,3,1]。
给定非负整数 X 的数组形式 A,返回整数 X+K 的数组形式。
示例一
输入: A = [1,2,0,0], K = 34
输出: [1,2,3,4]
解释: 1200 + 34 = 1234
示例二
输入: A = [2,7,4], K = 181
输出: [4,5,5]
解释: 274 + 181 = 455
示例三
输入: A = [2,1,5], K = 806
输出: [1,0,2,1]
解释: 215 + 806 = 1021
示例四
输入: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
思路分析
逐位相加
这个就当数学题做,从右到左依次相加,十进制,超过10则进一位,
AC代码
class Solution {
fun addToArrayForm(num: IntArray, k: Int): List<Int> {
val sum = ArrayList<Int>()
var i = num.lastIndex
var j = k
var d = 0
while (i > -1 && j != 0) {
d += num[i] + j % 10
sum.add(d % 10)
d /= 10
i--
j /= 10
}
while (i > -1) {
d += num[i]
sum.add(d % 10)
d /= 10
i--
}
while (j != 0) {
d += j % 10
sum.add(d % 10)
d /= 10
j /= 10
}
if (d != 0) {
sum.add(d)
}
return sum.reversed()
}
}
总结
简单的数学加上数组的简单运用即可。
参考
数组形式的整数加法 - 数组形式的整数加法 - 力扣(LeetCode) (leetcode-cn.com)
Kotlin solution: double 100% - 数组形式的整数加法 - 力扣(LeetCode) (leetcode-cn.com)
解决思路中有2个小技巧:注释详细,思路简洁 - 数组形式的整数加法 - 力扣(LeetCode) (leetcode-cn.com)