給一個存在array的數字, (312三百一十二存成 3,1,2這樣)
加一之後回傳新的array,
要注意的應該就是進位的部分吧
因為是easy等級大概只要注意寫對就可以了?
自以為加速的把確定不會進位的先做好像只是自做聰明XD
anyway.
Plus One
/**
* 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) {
*returnSize = digitsSize;
int *ret ;
if(digits ==NULL || digitsSize==0)
return ret;
if(digits[digitsSize-1]<9)
{
digits[digitsSize-1] += 1;
ret = malloc (sizeof(int)*(digitsSize));
memcpy(ret,digits,sizeof(int)*(digitsSize));
return ret;
}
int i,tenflag=1;
digits[digitsSize-1] = 0;
for(i=digitsSize-2;i>=0;i--)
{
if(digits[i]+tenflag >= 10)
{
digits[i] = 0;
tenflag = 1;
}
else
{
digits[i] = digits[i]+tenflag--;
// tenflag=0;
break;
}
}
if (tenflag)
{
ret = malloc (sizeof(int)*(digitsSize+1));
ret[0] = 1;
memcpy(ret+1, digits, sizeof(int)*(digitsSize));
*returnSize = digitsSize+1;
}
else
{
ret = malloc (sizeof(int)*(digitsSize));
memcpy(ret,digits,sizeof(int)*(digitsSize));
}
return ret;
}
沒有留言:
張貼留言