一.题目
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
示例 1:
输入: [1,2,3]
输出: [1,2,4]
解释: 输入数组表示数字 123。
示例 2:
输入: [4,3,2,1]
输出: [4,3,2,2]
解释: 输入数组表示数字 4321。
二.代码(C)
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
void rightmove(int* a,int* digits, int digitsSize);
int* plusOne(int* digits, int digitsSize, int* returnSize)
{
int i;
for(i=digitsSize-1;i>=0;i--)
{
if(digits[i]<=8)
{
digits[i]++;
*returnSize = digitsSize;
return digits;
}
else
{
digits[i]=0;
if(i==0)
{
//int a[digitsSize+1];
int* a;
a = (int *)malloc((digitsSize+1)*sizeof(int));
rightmove(a,digits,digitsSize);
*returnSize = digitsSize+1;
//printf("%d",*returnSize);
return a;
}
}
}
return digits;
}
void rightmove(int* a,int* digits, int digitsSize)
{
int i;
for(i=digitsSize;i>0;i--)
{
//printf("%d",digits[i-1]);
a[i] = digits[i-1];
}
a[i] = 1;
//printf("%d",a[0]);
}
三.提交记录
四.备注
无