给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。

给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。

最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。

你可以假设除了整数 0 之外,这个整数不会以零开头。
(注意:你要防止的是第一个数字是9或者最后一个是9哈!这种情况会有进位)

代码实现

int* plusOne(int* digits, int digitsSize, int* returnSize) {
    int i = digitsSize - 1;
    for(i;i >= 0;i--){
        if(digits[i] < 9)
        {
            digits[i]++;
            *returnSize = digitsSize;
            return digits;
        }
        else
         digits[i] = 0; //为9时要进位
    }
    int* new = (int*) malloc ((digitsSize + 1) * sizeof (int));  //全为9时开一个空间加一的新数组
    new[0] = 1;  //首位为一,其余为0
    for(i = 1;i < (digitsSize + 1);i++)
        new[i] = 0;
    *returnSize = digitsSize + 1;
    return new;
}

你可能感兴趣的:(练习题解)