From 295795c04170e2b40317c5cad60af750e3911cb3 Mon Sep 17 00:00:00 2001 From: Mistivia Date: Wed, 3 Sep 2025 16:32:07 +0800 Subject: solve 66 --- c/0066/main.c | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 c/0066/main.c diff --git a/c/0066/main.c b/c/0066/main.c new file mode 100644 index 0000000..b01eb8b --- /dev/null +++ b/c/0066/main.c @@ -0,0 +1,38 @@ +#include + +// begin + +/** + * Note: The returned array must be malloced, assume caller calls free(). + */ +int* plusOne(int* digits, int digitsSize, int* returnSize) { + int *buffer = malloc((digitsSize + 1) * sizeof(int)); + for (int i = 0; i < digitsSize; i++) { + buffer[i] = digits[digitsSize - 1 - i]; + } + buffer[0]++; + int carry = 0; + for (int i = 0; i < digitsSize; i++) { + int val = buffer[i] + carry; + carry = val / 10; + buffer[i] = val % 10; + } + int len = digitsSize; + if (carry) { + len++; + buffer[digitsSize] = 1; + } + int lp = 0, rp = len - 1; + while (lp <= rp) { + int t = buffer[lp]; + buffer[lp] = buffer[rp]; + buffer[rp] = t; + lp++; + rp--; + } + *returnSize = len; + return buffer; +} + +// end + -- cgit v1.0