码迷,mamicode.com
首页 > 其他好文 > 详细

Leetcode:Plus One

时间:2014-05-20 10:42:14      阅读:244      评论:0      收藏:0      [点我收藏+]

标签:style   blog   class   c   code   java   

戳我去解题

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.

 

分析:这题也是非常简单,就是简单模拟题

因为只有最末位加1,其余位没有额外加数,所以分情况:

bubuko.com,布布扣
class Solution {
public:
    vector<int> plusOne(vector<int> &digits) {
        vector<int> res(digits);
        int val = 0;
        int carry = 0;
        for (int i = digits.size() - 1; i >= 0; --i) {
            if (i == digits.size() - 1) {
                val = (digits.at(i) + 1 + carry) % 10;
                carry = (digits.at(i) + 1 + carry) / 10;
            } else {
                val = (digits.at(i)  + carry) % 10;
                carry = (digits.at(i) + carry) / 10;
            }
            res.at(i) = val;
        }
        if (carry == 1) {
            res.insert(res.begin(), 1);
        }
        return res;
    }
};
bubuko.com,布布扣

 

后来看了他人的题解,有个小技巧,可以将 进位 carry 初始化为 加数,这样就可以统一代码,而不需要分情况了

bubuko.com,布布扣
class Solution {
public:
    vector<int> plusOne(vector<int> &digits) {
        vector<int> res(digits);
        int val = 0;
        int carry = 1;
        for (int i = digits.size() - 1; i >= 0; --i) {
            val = (digits.at(i)  + carry) % 10;
            carry = (digits.at(i)  + carry) / 10;
            res.at(i) = val;
        }
        if (carry == 1) {
            res.insert(res.begin(), 1);
        }
        return res;
    }
};
bubuko.com,布布扣

 

Leetcode:Plus One,布布扣,bubuko.com

Leetcode:Plus One

标签:style   blog   class   c   code   java   

原文地址:http://www.cnblogs.com/wwwjieo0/p/3737762.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!