閱讀659 返回首頁    go 京東網上商城


[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

  上一篇:go 藍橋杯-算法訓練 操作格子
  下一篇:go spss中文視頻教程下載