c
复制代码
int* plusOne(int* digits, int digitsSize, int* returnSize)
{
int end = digitsSize - 1;
int *arr = NULL;
while(end + 1)/*end+1 是确保digits数组每一个元素都遍历到*/
{
/*元素为9就置0,不为9就加1*/
if(digits[end] == 9)
{
digits[end] = 0;
}
else
{
digits[end] = digits[end] + 1;
break;
}
end--;
}
/*判断重新赋值后的digits数组的首元素是否是0*/
if(0 == digits[0])/*特殊情况:需要申请的空间为digitsSize+1*/
{
/*arr数组为{1,0,0,0,..,0}*/
arr = (int *)malloc(sizeof(int) * (digitsSize + 1));
arr[0] = 1;
memset(&arr[1], 0, sizeof(int) * digitsSize);/*除了首元素其他元素置0*/
*returnSize =digitsSize + 1;
}
else/*常规情况,直接将digits数组数组返回即可*/
{
*returnSize =digitsSize;
return digits;
}
return arr;
}