> For the complete documentation index, see [llms.txt](https://jenhsuan.gitbook.io/algorithm/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://jenhsuan.gitbook.io/algorithm/leetcode/66.-plus-one.md).

# 66. Plus One

## 1.問題

* 給予一個list, 並在最末的數值+ 1, 問最終的list

![](/files/-LN9jB79b2L4DyriYVst)

## 2.想法

* 提問: 確定是在第一個元素還是最末個元素+ 1
* function header, parameter
* test input
* 說明想法&#x20;
  * 因為在第一個元素+ 1會比較簡單, 因此計算前先對vector reverse以方便計算
  * 計算時須注意新的值是(carry + 自己) % 10, 並且更新carry
  * 當結束計算, carry不為零時, push到list中
  * reverse回來
* 測試計算複雜度

## 3.程式碼

```
class Solution {
public:
    vector<int> plusOne(vector<int>& digits) {
        //vector<int> res;
        reverse(digits.begin(), digits.end());
        int ret = 0, curr = 0; 
        for (int i = 0 ; i < digits.size(); i++){
            if( i == 0){
                ret = (digits[0] + 1) / 10;
                digits[0] = ((digits[0] + 1) < 10) ? digits[0] + 1 : (digits[0] + 1) % 10;
            }else{
                int t = digits[i];
                digits[i] = ((digits[i] + ret) < 10) ? digits[i] + ret : (digits[i] + ret) % 10;
                ret = (ret + t) / 10;
            }
        }
        if(ret != 0){
            digits.push_back(ret);
        }
        reverse(digits.begin(), digits.end());
        return digits;
    }
};
```
