659
京東網上商城
[LeetCode]66.Plus One
【題目】
Given a number represented as an array of digits, plus one to the number.
【題意】
給你一個用數組表示的數,求加一之後的結果,結果還是用數組表示。
【分析】
從低位到高位,連續遇到9才能加一進位。
【代碼1】
/********************************* * 日期:2014-01-22 * 作者:SJF0115 * 題號: Plus One * 來源:https://oj.leetcode.com/problems/plus-one/ * 結果:AC * 來源:LeetCode * 總結: **********************************/ #include <iostream> #include <stdio.h> #include <vector> using namespace std; class Solution { public: vector<int> plusOne(vector<int> &digits) { int i; for(i = digits.size() - 1;i >= 0;--i){ if(digits[i] != 9){ ++digits[i]; return digits; } else { digits[i] = 0; } } //各位全是9 if(i < 0) { digits.insert(digits.begin(),1); } return digits; } }; int main() { Solution solution; vector<int> result; vector<int> array = {9,9,9}; result = solution.plusOne(array); int n = result.size(); for(int i = 0;i < n;i++){ printf("%d",result[i]); }//for printf("\n"); return 0; }
【代碼2】
class Solution { public: vector<int> plusOne(vector<int> &digits) { add(digits,1); return digits; } private: //模版:數組表示的大數加一個整數(0-9) void add(vector<int> &digits,int value){ int i; //進位 int c = value; int n = digits.size(); for(i = n - 1;i >= 0;i--){ digits[i] += c; c = digits[i] / 10; digits[i] %= 10; } //還有進位 if(c > 0){ digits.insert(digits.begin(),c); } } };
最後更新:2017-04-03 12:54:44