解题思路
根据题目可以得出此题一共有3种需要特殊判断的地方。1.数组元素的最后一个元素是否为9,如果是那就将此处元素置0,如果不是那就此处元素加1。按照这个逻辑将digits数组重新赋值。2.判断重新赋值的digits数组的首元素是否是0,如果是就需要申请一个digitsSize+1的空间来存储数组,如果不是就直接将digits数组返回,数组长度是digitsSize。
代码
int* plusOne(int* digits, int digitsSize, int* returnSize)
{int end = digitsSize - 1;int *arr = NULL;while(end + 1){if(digits[end] == 9){digits[end] = 0;}else{digits[end] = digits[end] + 1;break;}end--;}if(0 == digits[0]){arr = (int *)malloc(sizeof(int) * (digitsSize + 1));arr[0] = 1;memset(&arr[1], 0, sizeof(int) * digitsSize);*returnSize =digitsSize + 1;}else{*returnSize =digitsSize;return digits;}return arr;
}