1. 程式人生 > >leetcode:Plus One (加一)【面試演算法題】

leetcode:Plus One (加一)【面試演算法題】

題目:Given a number represented as an array of digits, plus one to the number.

題意動態陣列存了一些個位數字,組成一個大數,計算這個大數加一之後的值。

模擬大數的加法,當沒有進位的時候就可以彈出迴圈。

特殊考慮各個位數就是9的情況,加一後會多出一位,即結果是1加上len個0,len是digits的長度。

class Solution {
public:
    vector<int> plusOne(vector<int> &digits) {
        int i,p,temp,len=digits.size();
        for(i=0;i<len;++i)
        {
            if(digits[i]!=9)break;
        }
        if(i==len)
        {
            vector<int>result;
            result.push_back(1);
            for(i=0;i<len;++i)result.push_back(0);
            return result;
        }
        digits[len-1]+=1;
        p=0;
        for(i=len-1;i>=0;--i)
        {
            temp=digits[i]+p;
            digits[i]=temp%10;
            p=temp/10;
            if(p==0)break;
        }
        return digits;
    }
};
// http://blog.csdn.net/havenoidea/