https://leetcode-cn.com/problems/plus-one/
分三类情况讨论:
1、数组最后一个数字不为9,即无需进位,直接把最后一个数+1后返回
2、数组全部元素都为9,新创立一个数组a[digitsSize+1],把第一位置为1,其他置为0,返回
3、数组倒数几个元素为9,找到最后一个不为9的元素的下标,对应元素值+1,其后所有元素置为0,返回
int* plusOne(int* digits, int digitsSize, int* returnSize){
//最后一个数不为9
if(digits[digitsSize-1]!=9){
digits[digitsSize-1]+=1;
*returnSize=digitsSize;
return digits;
}
int i=digitsSize-1;
while(i>=0){
if(digits[i]!=9){
break;
}
i--;
}
//全部数字都为9
if(i<0){
int* a=(int*)malloc(sizeof(int)*(digitsSize+1));
*returnSize=digitsSize+1;
for(int i=1;i<=digitsSize;i++){
a[i]=0;
}
a[0]=1;
return a;
}
//倒数几个数为9
else{
*returnSize=digitsSize;
for(int k=i+1;k<digitsSize;k++) digits[k]=0;
digits[i]++;
return digits;
}
}