「每日LeetCode」2022年3月16日

本文最后更新于:2023年3月19日 晚上

989.数组形式的整数加法

989.数组形式的整数加法

Category Difficulty Likes Dislikes
algorithms Easy (46.93%) 187 -

Tags
Companies
整数的 数组形式 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

Discussion | Solution

思路

同模拟加法思路,但是边界条件比较恶心需要注意下即可

解答

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/*
* @lc app=leetcode.cn id=989 lang=javascript
*
* [989] 数组形式的整数加法
*/

// @lc code=start
/**
* @param {number[]} num
* @param {number} k
* @return {number[]}
*/
var addToArrayForm = function (num, k) {
const arr = (k + "").split("");
const maxArr = num.length > arr.length ? num : arr,
minArr = num.length > arr.length ? arr : num;
let flag = false;
for (let i = 0; i < maxArr.length; i++) {
const num1 = +maxArr[maxArr.length - 1 - i];
const num2 = +(minArr[minArr.length - 1 - i]
? minArr[minArr.length - 1 - i]
: 0);
const sum = num1 + num2 + (flag ? 1 : 0);
flag = sum >= 10;
maxArr[maxArr.length - 1 - i] = sum % 10;
}
if (flag) maxArr.unshift(1);
return maxArr;
};
// @lc code=end