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

2023-06-09  本文已影响0人  freesan44

题目

整数的 数组形式 num 是按照从左到右的顺序表示其数字的数组。

例如,对于 num = 1321 ,数组形式是 [1,3,2,1] 。
给定 num ,整数的 数组形式 ,和整数 k ,返回 整数 num + k 的 数组形式 。

示例 1:

输入:num = [1,2,0,0], k = 34
输出:[1,2,3,4]
解释:1200 + 34 = 1234
示例 2:

输入:num = [2,7,4], k = 181
输出:[4,5,5]
解释:274 + 181 = 455
示例 3:

输入:num = [2,1,5], k = 806
输出:[1,0,2,1]
解释:215 + 806 = 1021

提示:

1 <= num.length <= 104
0 <= num[i] <= 9
num 不包含任何前导零,除了零本身
1 <= k <= 104

解题思路

class Solution {
    func addToArrayForm(_ num: [Int], _ k: Int) -> [Int] {
//        var newK = Array<Int>()
//        var vk = k
//        var vNum: [Int] = num
//        var newRet = Array<Int>()
//
//        while vk>0 {
//            newK.insert(vk%10, at: 0)
//            vk = vk/10
//        }
//        var temp = 0
//        while vNum.count>0 || newK.count>0 || temp != 0{
//            var left = 0
//            var right = 0
//            if vNum.count>0{
//                left = vNum.removeLast()
//            }
//            if newK.count>0{
//                right = newK.removeLast()
//            }
//            print(right,left)
//            var ret = left + right + temp
//            temp = 0
//            if ret>9{
//                temp = ret/10
//                ret = ret%10
//            }
//            newRet.insert(ret, at: 0)
////            print(newRet)
//        }
//        return newRet
        var res = [Int]()
        var n = num.count
        var vk = k

        for i in stride(from: n - 1, through: 0, by: -1) {
            if i >= 0 {
                vk += num[i]
            }
            res.append(vk % 10)
            vk /= 10
        }

        while vk > 0 {
            res.append(vk % 10)
            vk /= 10
        }

        return res.reversed()
    }
}
上一篇 下一篇

猜你喜欢

热点阅读