close

其實這一題很簡單, 原本的思路vector近來先反轉, 轉完後依次取得每一位, 並且* 1 * 10 * 100, 這樣就能從 [ 1,2,3 ] -> [ 3,2,1 ] -> 123;

加上1之後, 在將數字轉成文字, 反轉-> 讓每一個char去-48變成integer, 最後依次存回output; 

這是最開始的思路; 但後來想一想, 好像也不用那麼複雜, 啊就進來的丟去一個迴圈跑, 然後看當前這個數字++後是否>9, 大於9就讓[ i ] = 0; 並且依次做下去, 這樣不就得到最後結果了. 

 

 

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 1:

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].

Example 2:

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].

Example 3:

Input: digits = [9]
Output: [1,0]
Explanation: The array represents the integer 9.
Incrementing by one gives 9 + 1 = 10.
Thus, the result should be [1,0].

 

Constraints:

  • 1 <= digits.length <= 100
  • 0 <= digits[i] <= 9
  • digits does not contain any leading 0's.

 

image

image

vector<int> plusOne_V2(vector<int>& digits) {

    for (int i = digits.size(); i--; digits[i] = 0) {
        if (digits[i]++ < 9)
            return digits;
    }
    digits[0]++;
    digits.push_back(0);
    return digits;
}

arrow
arrow
    文章標籤
    C++ C leetcode中文 LEETCODE
    全站熱搜
    創作者介紹
    創作者 Eric 的頭像
    Eric

    一個小小工程師的心情抒發天地

    Eric 發表在 痞客邦 留言(0) 人氣()