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

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

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

相关文章:

  • 2022-01-12
  • 2021-05-01
  • 2021-11-19
  • 2021-10-11
  • 2021-05-30
  • 2021-06-03
  • 2022-01-09
  • 2022-12-23
猜你喜欢
  • 2021-04-03
  • 2022-12-23
  • 2021-06-24
  • 2021-11-17
  • 2022-01-14
  • 2022-01-23
  • 2021-06-10
相关资源
相似解决方案