以最后一个元素开始,若有进位则保存到curr上并对原数据上加1,并定义一个新的数组。若没有进位则正常返回。
int* plusOne(int* digits, int digitsSize, int* returnSize){
*returnSize = digitsSize;
int i = 0;
int curr = 1;
for(i = digitsSize-1; i >= 0; i--){
curr = (digits[i]+curr)/10;
if(curr == 0){
digits[i] += 1;
break;
}
else{
digits[i] = 0;
}
}
if(curr != 0){
int *result = (int *)malloc((digitsSize+1)*sizeof(int));
for(i = digitsSize-1; i >= 0; i--){
result[i+1] = digits[i];
}
result[0] = curr;
*returnSize = digitsSize+1;
return result;
}
else{
return digits;
}
}



