一、题目
1、题目描述
整数的 数组形式 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
2、基础框架
- C++版本给出的基础框架如下:
3、原题链接
https://leetcode.cn/problems/add-to-array-form-of-integer/
二、解题报告
1、思路分析
( 1 ) (1) (1)将k转为数组。然后进行两个数组将元素相加
2、时间复杂度
时间复杂度为O(n),空间复杂度为O(n)
3、代码详解
class Solution {
public:
vector<int> addToArrayForm(vector<int>& num, int k) {
vector<int> a;
vector<int> re;
int r=0;
while(k>0) {
r = k%10;
k = k/10;
a.push_back(r);
}
reverse(a.begin(),a.end());
int n = num.size()-1;
int m = a.size()-1;
r = 0;
int t=0;
while(n>=0&&m>=0){
t = num[n] + a[m] + r;
if(t>9) {
re.push_back(t%10);
r = t/10;
}else {
re.push_back(t);
r=0;
}
n--;
m--;
}
while(n>=0){
t = num[n] + r;
if(t>9) {
re.push_back(t%10);
r = t/10;
}else {
re.push_back(t);
r=0;
}
n--;
}
while(m>=0){
t = a[m] + r;
if(t>9) {
re.push_back(t%10);
r = t/10;
}else {
re.push_back(t);
r=0;
}
m--;
}
if (r>0) {
re.push_back(r);
}
reverse(re.begin(),re.end());
return re;
}
};
三、本题小知识
1.整数转数组