Leetcode 66. Plus One

2017-06-27  本文已影响0人  persistent100

题目

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.

分析

给出一个整数数组表示一个非负大整数。要求加一后返回。直接依次对各个位加一进行计算,当大于10进位。最后长度需要判断。

/**
 * 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) {
    int *ans=(int *)malloc(sizeof(int)*(digitsSize+1));
    *returnSize=0;
    int temp=1;
    for(int i=digitsSize-1;i>=0;i--)
    {
        temp=temp+digits[i];
        if(temp>9)
        {
            ans[i+1]=temp%10;
            temp=temp/10;
        }
        else
        {
            ans[i+1]=temp;
            temp=0;
        }
    }
    if(temp!=0)
    {
        ans[0]=1;
        *returnSize=digitsSize+1;
    }
    else
    {
        for(int i=0;i<digitsSize;i++)
            ans[i]=ans[i+1];
        *returnSize=digitsSize;
    }
    return ans;
}

test

上一篇下一篇

猜你喜欢

热点阅读