Givenanon-negativenumberrepresentedasanarrayofdigits,plusonetothenumber. Thedigitsarestoredsuchthatthemostsignificantdigitisattheheadofthelist. Subscribetoseewhichcompaniesaskedthisquestion 无 int* plusOne(int* digits, int digitsSize, int*
Given a non-negative number represented as an array of digits, plus one to the number.
The digits are stored such that the most significant digit is at the head of the list.
Subscribe to see which companies asked this question
int* plusOne(int* digits, int digitsSize, int* returnSize) {
int i = (digitsSize) - 1; // start from back
int* newDigits = NULL;
// if input is 0 don't bother
if(!digits || digitsSize < 1) return NULL;
while( i>=0 )
{
if(digits[i] == 9)
{
digits[i] = 0;
--i;
}
else
{
++digits[i];
--i;
break;
}
}
if(digits[0] == 0)
{
*returnSize = digitsSize +1;
newDigits =(int*) malloc( sizeof(int)*(*returnSize));
memcpy( newDigits+1,digits,sizeof(int)*digitsSize);
newDigits[0]=1;
}
else
{
*returnSize = digitsSize ;
newDigits = (int*)malloc( sizeof(int)*(*returnSize));
memcpy( newDigits,digits,sizeof(int)*digitsSize);
}
return newDigits;
}