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

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

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

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

/**
* 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 count = digitsSize; //使count到最后一位
int *digits_2=(int*)malloc(sizeof(int)*(digitsSize+1)); //多分配一位,防止溢出
for(int i = 0;i< digitsSize; i++)
digits_2[i+1] = digits[i];
digits_2[0] = 0;
while(digits_2[count]+1 == 10) //没有考虑最后一次进位
{
digits_2[count] = 0;
if(count!= 0) count--;
}
digits_2[count]+= 1; //补充最后一次进位
if(count == 0)
*returnSize = digitsSize + 1;
else
{ for(int i = 0; i < digitsSize;i++)
digits_2[i] = digits_2[i+1];
*returnSize = digitsSize;
}
return digits_2;
}

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄