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

128 阅读2分钟

「这是我参与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)