plus-one(加一)
阿新 • • 發佈:2019-01-09
題目描述
Given a number represented as an array of digits, plus one to the number.
題目大意
用一個數組表示一個數,把這個數做加一操作。
思路
不需要flag!
從右向左,遇到9就變0,非9就加1,然後break;
digits[0]如果等於0,說明長度增加了1,則新插入一個首位,首位為1,其他位為0。
程式碼
#include<iostream> #include<vector> using namespace std; vector<int> plusOne(vector<int> &digits) { for(int i=digits.size()-1; i>=0; i--) { // 若當前位小於9,只需在當前位加一就可以結束迴圈了 // 並且當前結束迴圈後不存在第一位進位,因此置識別符號為true if(digits[i] < 9) { digits[i] += 1; break; } // 若當前數字為9,則需要向前一位進位,並且把本位置為0 else if(digits[i] == 9) { digits[i] = 0; } } // digits[0]如果等於0,說明長度增加了1。 // vector.insert(iterator loc, const TYPE &val), // 表示在指定位置loc前插入值為val的元素, // 返回指向這個元素的迭代器, if(digits[0] == 0) { digits.insert(digits.begin(), 1); } return digits; } int main() { vector<int> vec1; for(int i=1; i<5; i++) { vec1.push_back(i); } // 1 2 3 4 plusOne(vec1); for(int i=0; i<vec1.size(); i++) { cout<<vec1[i]<<' '; } cout<<endl; // vector<int> vec2; for(int i=9; i>4; i--) { vec2.push_back(9); } // 9 9 9 9 9 plusOne(vec2); for(int i=0; i<vec2.size(); i++) { cout<<vec2[i]<<' '; } cout<<endl; return 0; }
執行結果
以上。