对于非负整数 X
而言,X
的数组形式是每位数字按从左到右的顺序形成的数组。例如,如果 X = 1231
,那么其数组形式为 [1,2,3,1]
。
给定非负整数 X
的数组形式 A
,返回整数 X+K
的数组形式。
示例 1:
输入:A = [1,2,0,0], K = 34 输出:[1,2,3,4] 解释:1200 + 34 = 1234
解释 2:
输入:A = [2,7,4], K = 181 输出:[4,5,5] 解释:274 + 181 = 455
示例 3:
输入:A = [2,1,5], K = 806 输出:[1,0,2,1] 解释:215 + 806 = 1021
示例 4:
输入:A = [9,9,9,9,9,9,9,9,9,9], K = 1 输出:[1,0,0,0,0,0,0,0,0,0,0] 解释:9999999999 + 1 = 10000000000
提示:
1 <= A.length <= 10000
0 <= A[i] <= 9
0 <= K <= 10000
如果 A.length > 1
,那么 A[0] != 0
C
/**
* Return an array of size *returnSize.
* Note: The returned array must be malloced, assume caller calls free().
*/
int* addToArrayForm(int* A, int ASize, int K, int* returnSize)
{
int m=ASize;
int* res=(int*)malloc(sizeof(int)*(m+5));
int t=0;
for(int i=0;i<m/2;i++)
{
int tmp=A[i];
A[i]=A[m-1-i];
A[m-1-i]=tmp;
}
for(int i=0;i<m;i++)
{
K+=A[i];
res[t++]=K%10;
K/=10;
}
while(K)
{
res[t++]=K%10;
K/=10;
}
for(int i=0;i<t/2;i++)
{
int tmp=res[i];
res[i]=res[t-1-i];
res[t-1-i]=tmp;
}
*returnSize=t;
return res;
}
C++
class Solution {
public:
vector<int> addToArrayForm(vector<int>& A, int K)
{
int m=A.size();
reverse(A.begin(),A.end());
for(int i=0;i<m;i++)
{
K+=A[i];
A[i]=K%10;
K/=10;
}
while(K)
{
A.push_back(K%10);
K/=10;
}
reverse(A.begin(),A.end());
return A;
}
};
python
class Solution:
def addToArrayForm(self, A: 'List[int]', K: 'int') -> 'List[int]':
m=len(A)
A=list(reversed(A))
for i in range(m):
K+=A[i]
A[i]=K%10
K//=10
while K:
A.append(K%10)
K//=10
A=list(reversed(A))
return A