[toc] leetcode 989. 数组形式的整数加法.
题目描述
- 数组形式的整数加法
整数的 数组形式 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
解题思路
法1
模拟:
两个指针来处理两个数组的加法,其中一个指针用于遍历num数组,另一个指针用于处理整数k。
通过将k与num[i]相加,并将结果添加到结果数组中。
如果数组中的数字大于9,则取其个位数,并将十位数进位到下一位。最后,需要反转结果数组以得到正确的顺序。
- 时间复杂度(O(n))
- 空间复杂度(O(1))
执行结果
法1
func addToArrayForm(num []int, k int) []int {
result := make([]int, 0)
i := len(num) - 1
for i >= 0 || k > 0 {
if i >= 0 {
k += num[i]
}
result = append(result, k%10)
k /= 10
i--
}
reverse(result)
return result
}
func reverse(nums []int) {
i, j := 0, len(nums)-1
for i < j {
nums[i], nums[j] = nums[j], nums[i]
i++
j--
}
}
执行结果: 通过 显示详情 查看示例代码 添加备注
执行用时: 20 ms , 在所有 Go 提交中击败了 94.12% 的用户 内存消耗: 6.6 MB , 在所有 Go 提交中击败了 76.47% 的用户 通过测试用例: 152 / 152 炫耀一下:
本文由mdnice多平台发布