/** * Note: The returned array must be malloced, assume caller calls free(). */ int *plusOne(int *digits, int digitsSize, int *returnSize) { for (int i = digitsSize - 1; i >= 0; i--) { if (digits[i] < 9) { digits[i]++; *returnSize = digitsSize; return digits; } else { digits[i] = 0; } } int *newdigit = (int *)malloc((digitsSize + 1) * sizeof(int)); newdigit[0] = 1; for (int i = 1; i < (digitsSize + 1); i++) { newdigit[i] = digits[i - 1]; } *returnSize = digitsSize + 1; return newdigit; }