# 66. Plus One 題目:<https://leetcode.com/problems/plus-one/> 解法:直接解,加一後檢查每個位數是否進位,如果最後一位有進位的話,要增加一個位數。 Python3: ``` python 3 class Solution: def plusOne(self, digits: list[int]) -> list[int]: length = len(digits) ans = [] carry = 1 i = length - 1 while i >= 0: num = digits[i] + carry carry = num // 10 num %= 10 ans.append(num) i -= 1 if carry > 0: ans.append(carry) ans.reverse() return ans if __name__ == '__main__': # digits = [1, 2, 3] digits = [9, 9, 9, 9] ans = Solution().plusOne(digits) print(ans) ``` C: ``` c #include <stdio.h> #include <stdlib.h> int* plusOne(int* digits, int digitsSize, int* returnSize) { *returnSize = digitsSize; int *ans = (int *)malloc(sizeof(int) * digitsSize); int carry = 1; for (int i = digitsSize - 1; i >= 0; i--) { int num = digits[i] + carry; carry = num / 10; num %= 10; ans[i] = num; } if (carry > 0) { (*returnSize)++; ans = realloc(ans, sizeof(int) * (*returnSize)); for (int i = digitsSize - 1; i >= 0; i--) { ans[i+1] = ans[i]; } ans[0] = carry; } return ans; } int main() { int digits[] = {9, 9, 9, 9}; int digitsSize = sizeof(digits) / sizeof(digits[0]); int returnSize; int *ans = plusOne(digits, digitsSize, &returnSize); for(int i = 0; i < returnSize; i++) printf("%d", ans[i]); printf("\n"); return 0; } ``` ###### tags: `leetcode` `array` `math`