数组中的非负整数加一

给一个由整数组成的数组表示非负整数,在该数的基础上加一,并且每个数组的元素只存储单个数字,除整数0之外,这个整数不会以0开头。

例如:

输入:digits=[ 1,1,9 ]

输出:[ 1,2,0 ]

输入:digits=[ 9,9 ]

输出:[ 1,0,0 ]

思路:分三种情况

1.末尾不是9 ,,,直接末尾加一,返回数组

2.末尾是9 ,,,末尾归零,向前遍历,找出不是9的元素,进行加一操作,返回数组

3.所有元素都是9,,,重新分配数组的空间(原来空间的基础上加一个整形变量的空间),第一个元素为1,其他所有元素归0

/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* plusOne(int* digits, int digitsSize, int* returnSize){
    if(digits[digitsSize-1]!=9){ //末尾不是9
        digits[digitsSize-1]++;
        *returnSize=digitsSize;
        return digits;
    }
    for(int i=digitsSize-1;i>=0;i--){ //末尾是9
        if(digits[i]!=9){ //找出不是9的字符,进行加一操作
            *returnSize=digitsSize;
            digits[i]++;
            return digits;
        }
        digits[i]=0; //若字符是9,全部变成0
    }
    *returnSize=digitsSize+1;//数组中的字符全是9,数组需要加上一个int型变量所占的空间
    digits=(int *)realloc(digits,*returnSize*sizeof(int));//重新分配空间
    digits[digitsSize]=0;//
    digits[0]=1;
    return digits;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小柒,。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值