力拓2

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

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

你可以假设除了整数 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;
}

posted on 2019-04-13 17:40  xiegangqingnian  阅读(122)  评论(0编辑  收藏  举报

导航