Leecode初级算法数组——加一

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

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

你可以假设除了整数 0 之外,这个整数不会以零开头。

示例 1:

输入:digits = [1,2,3]
输出:[1,2,4]
解释:输入数组表示数字 123。
示例 2:

输入:digits = [4,3,2,1]
输出:[4,3,2,2]
解释:输入数组表示数字 4321。
示例 3:

输入:digits = [0]
输出:[1]
 

提示:

1 <= digits.length <= 100
0 <= digits[i] <= 9

思路如下:

当数组的最后一个元素不是9的时候,我们就直接给最后一个元素加一,返回数组。

当数组的最后一个元素是9的时候,我们给它赋值为0,它的前一位数字加一。

当存在像99,999这样的数字的时候,此时数组的长度需要加1,其它位变为0,所以还要开辟动态内存。

代码如下:

Leecode初级算法数组——加一_第1张图片

int* plusOne(int* digits, int digitsSize, int* returnSize){
    for(int i=digitsSize-1;i>=0;i--)
    {
        if(digits[i]!=9)
        {
         digits[i]++;
         *returnSize = digitsSize;
          return digits;
        }
        else
        digits[i]=0;
    }
    *returnSize=digitsSize+1;
    int *space = (int *)malloc(sizeof(int) * (digitsSize+1));
    for(int i = 1; i < digitsSize + 1; i++) 
        space[i] =0;
        space[0] = 1;                                   
    return space;
}

你可能感兴趣的:(Leecode,C语言,算法,leetcode)