题目
整数的 数组形式 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()
}
}