您的位置:首页 > 编程语言 > C语言/C++

Leetcode_plus-one(c++ and python updated)

2014-03-21 22:55 281 查看
地址:http://oj.leetcode.com/problems/plus-one/

Given a non-negative number represented as an array of digits, plus one to the number.
The digits are stored such that the most significant digit is at the head of the list.

思路:大数相加原理。用carry表示进位。40ms

参考代码:

class Solution {
public:
vector<int> plusOne(vector<int> &digits) {
int carry = 1, num = 0;
vector<int>res;
for(int i = digits.size()-1; i>=0; --i)
{
num = digits[i] + carry;
if(num>9)
{
carry = 1;
res.push_back(num-10);
}
else
{
carry = 0;
res.push_back(num);
}
}

if(carry)
res.push_back(carry);

reverse(res.begin(), res.end());
return res;

}
};

//SECOND TRIAL, 12msclass Solution {public:    vector<int> plusOne(vector<int> &digits) {        if(digits.empty())            return digits;        bool flag = false;        int sz = digits.size();        for(int i = 0; i<sz; ++i)        {            if(digits[i]!=9)            {                flag = true;                break;            }        }        if(!flag)        {            vector<int>ans(sz+1, 0);            ans[0] = 1;            return ans;        }        int carry = 1;        for(int i = sz-1; i>=0; --i)        {            digits[i] += carry;            if(digits[i]==10)            {                digits[i] = 0;                carry = 1;            }            else                break;        }        return digits;    }};

python:

class Solution:    # @param digits, a list of integer digits    # @return a list of integer digits    def plusOne(self, digits):        if not digits:            return digits        carry = 1        for i in range(len(digits)-1, -1, -1):            digits[i] += carry            if digits[i] == 10:                carry = 1                digits[i] = 0            else:                return digits
        digits.insert(0, 1)        return digits
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: