1. 程式人生 > >leetcode 66 Plus One(加一運算)

leetcode 66 Plus One(加一運算)

題目要求

給定一個非空的數字陣列,該陣列表示一個非負整數,要求對這個非負整數加上1。返回操作後的陣列。

示例

輸入:[1,2,3] 表示123,
輸出[1,2,4] (123+1=124)

解題思路

因為題目已經說明不考慮負數的情況,所以對於任意非負數進行加1操作,可以分為兩種情況:
(1)不需要額外操作,直接加1, 如0,1,2,3…8這些數字。加1後,break返回即可。
(2)需要進位的,如9。那麼要把當前位設成0。
如果進位後的下一位也是9怎麼辦? 所以我們要從後向前對所有數字進行遍歷,是9就置0,不是9的話就回到(1)加1然後break。
(eg: 9,19

,99 ------> 0,20,00)
最後還要判斷一下開頭是不是0,如果是0,那麼要插入1。
(eg:上述中9,99進行加1後的結果0,00------> 變成10,100)

主要程式碼c++

class Solution {
public:
 	    vector<int> plusOne(vector<int>& digits) {
 	        for(int i=digits.size()-1; i >= 0; i--)
 	            {
 	                if (digits[i] != 9)
 	                {
digits[i] ++; break; } digits[i] = 0; } if (digits[0] == 0) digits.insert(digits.begin(),1); return digits; } };

原題連結:https://leetcode.com/problems/plus-one/