aboutsummaryrefslogtreecommitdiff
path: root/Computer_Science/leetcode/66-plus_one.c
diff options
context:
space:
mode:
authorSteve Lee <me@xiangyangli.com>2017-12-26 01:33:40 +0800
committerSteve Lee <me@xiangyangli.com>2017-12-26 01:33:40 +0800
commit79a9c52fa923fc78074d88463449a8b7f95ca3ef (patch)
tree80c2b596a7c41124845771dca99abd364e89d4c4 /Computer_Science/leetcode/66-plus_one.c
parent2e0e0f39d49296f0ffb99aea533a527174521d61 (diff)
download42-79a9c52fa923fc78074d88463449a8b7f95ca3ef.tar.xz
42-79a9c52fa923fc78074d88463449a8b7f95ca3ef.zip
update leetcode solution
Diffstat (limited to 'Computer_Science/leetcode/66-plus_one.c')
-rw-r--r--Computer_Science/leetcode/66-plus_one.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/Computer_Science/leetcode/66-plus_one.c b/Computer_Science/leetcode/66-plus_one.c
new file mode 100644
index 0000000..63d151c
--- /dev/null
+++ b/Computer_Science/leetcode/66-plus_one.c
@@ -0,0 +1,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;
+}