/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int* plusOne(int* digits, int digitsSize, int* returnSize){
if(digits[digitsSize-1] != 9){
++digits[digitsSize-1];
*returnSize = digitsSize;
return digits;
}
int i, flag = 0;
for(i = 0; i < digitsSize; i++){
if(digits[i] != 9) flag = 1;
}
if(!flag){
int* nums = (int*)malloc(sizeof(int) * (digitsSize+1));
nums[0] = 1;
for(i = 1; i <= digitsSize; i++) nums[i] = 0;
*returnSize = digitsSize + 1;
return nums;
}
else{
for(i = digitsSize-1; i >= 0; i--){
if(digits[i] != 9){
++digits[i];
break;
}
else{
digits[i] = 0;
}
}
*returnSize = digitsSize;
return digits;
}
}