美文网首页
66. Plus One

66. Plus One

作者: YellowLayne | 来源:发表于2017-06-16 14:56 被阅读0次

    1.描述

    Given a non-negative integer represented as a non-empty array of digits, plus one to the integer.

    You may assume the integer do not contain any leading zero, except the number 0 itself.

    The digits are stored such that the most significant digit is at the head of the list.

    2.分析

    3.代码

    /**
     * Return an array of size *returnSize.
     * Note: The returned array must be malloced, assume caller calls free().
     */
    int* plusOne(int* digits, int digitsSize, int* returnSize) {
        if (NULL == digits || 0 >= digitsSize) exit(-1);
        
        bool all_digits_are_9 = true;
        for (unsigned int i = 0; i < digitsSize && all_digits_are_9; ++i) {
            if (digits[i] != 9) all_digits_are_9 = false;
        }
        *returnSize = all_digits_are_9 ? digitsSize+1 : digitsSize;
        int *array = (int*)malloc(sizeof(int) * (*returnSize));
        if (NULL == array) exit(-1);
        
        array[*returnSize - 1] = digits[digitsSize - 1] + 1;
        int carry = array[*returnSize - 1] / 10;
        array[*returnSize - 1] = array[*returnSize - 1] % 10;
        for (int i = 1; i < digitsSize; ++i) {
            array[*returnSize - i - 1] = digits[*returnSize - i - 1] + carry;
            carry = array[*returnSize - i - 1] / 10;
            array[*returnSize - i - 1] = array[*returnSize - i - 1] % 10;
        }
        if (carry) array[0] = carry;
        return array;
    }
    

    相关文章

      网友评论

          本文标题:66. Plus One

          本文链接:https://www.haomeiwen.com/subject/rfcmqxtx.html