blob: 63d151c17895385aa948a5efdfeac61b62e29512 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/**
* 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 i;
int in = 1;
int *result;
for(i = digitsSize - 1; i >=0; i--) {
if(digits[i] == 9 && in == 1) {
digits[i] = 0;
in = 1;
} else {
digits[i] += in;
in = 0;
}
}
if(in == 1) {
result = malloc(sizeof(int) * (digitsSize + 1));
result[0] = 1;
for(i = 1; i < digitsSize + 1; i++) {
result[i] = digits[i-1];
}
*returnSize = digitsSize + 1;
} else {
result = digits;
*returnSize = digitsSize;
}
return result;
}
|