leetcode 66 Plus One(加一運算)
阿新 • • 發佈:2018-12-31
題目要求
給定一個非空的數字陣列,該陣列表示一個非負整數,要求對這個非負整數加上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
最後還要判斷一下開頭是不是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;
}
};