[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