題目:https://leetcode.com/problems/plus-one/
解法:直接解,加一後檢查每個位數是否進位,如果最後一位有進位的話,要增加一個位數。
Python3:
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:
#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;
}
leetcode
array
math
題目:https://leetcode.com/problems/add-two-integers/
Dec 6, 2023題目:https://leetcode.com/problems/add-two-integers/
Dec 2, 2023題目:https://leetcode.com/problems/add-two-integers/
Dec 2, 2023題目:https://leetcode.com/problems/add-two-integers/
Nov 12, 2023or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up