---
title: 'LeetCode 66. Plus One'
disqus: hackmd
---
# LeetCode 66. Plus One
## Description
You are given a large integer represented as an integer array digits, where each digits[i] is the ith digit of the integer. The digits are ordered from most significant to least significant in left-to-right order. The large integer does not contain any leading 0's.
Increment the large integer by one and return the resulting array of digits.
## Example
Input: digits = [1,2,3]
Output: [1,2,4]
Explanation: The array represents the integer 123.
Incrementing by one gives 123 + 1 = 124.
Thus, the result should be [1,2,4].
Input: digits = [4,3,2,1]
Output: [4,3,2,2]
Explanation: The array represents the integer 4321.
Incrementing by one gives 4321 + 1 = 4322.
Thus, the result should be [4,3,2,2].
## Constraints
1 <= digits.length <= 100
0 <= digits[i] <= 9
digits does not contain any leading 0's.
## Answer
視最高位是多少就開多大的memory,若開頭為9就開原size+1個memory,用for檢查高到低位,每次計算當下值和進位值,直到所有項目檢查完後要看有無最高位進位,若有接給定為1,若無還須調整最高位為9的returnSize及ans開頭address,因不需要進位就要將原本多給的memory或size扣回去。
```Cin=
//2022_03_30
int* plusOne(int* digits, int digitsSize, int* returnSize){
int i = 0, size = 0, pls = 1;
size = digits[0] == 9 ? digitsSize+1 : digitsSize;
int *ans = (int*)malloc(sizeof(int)*size);
*returnSize = size;
size--;
for(i = digitsSize-1; i >= 0; i--,size--){
ans[size] = (digits[i] + pls) % 10;
pls = (digits[i] + pls) / 10;
}
if(size == 0){
if(pls){ans[size] = 1;}
else{ans++; (*returnSize)--;}
}
return ans;
}
```
## Link
https://leetcode.com/problems/plus-one/
###### tags: `Leetcode`