首页 > 其他 > 详细

[LintCode] Plus One 加一运算

时间:2016-08-22 07:06:39      阅读:290      评论:0      收藏:0      [点我收藏+]

 

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.

Example

Given [1,2,3] which represents 123, return[1,2,4].

Given [9,9,9] which represents 999, return[1,0,0,0].

 

LeetCode上的原题,请参见我之前的博客Plus One

 

解法一:

class Solution {
public:
    /**
     * @param digits a number represented as an array of digits
     * @return the result
     */
    vector<int> plusOne(vector<int>& digits) {
        vector<int> res;
        int carry = 1, n = digits.size();
        for (int i = n - 1; i >= 0; --i) {
            int sum = digits[i] + carry;
            res.insert(res.begin(), sum % 10);
            carry = sum / 10;
        }
        if (carry == 1) res.insert(res.begin(), 1);
        return res;
    }
};

 

解法二:

class Solution {
public:
    /**
     * @param digits a number represented as an array of digits
     * @return the result
     */
    vector<int> plusOne(vector<int>& digits) {
        for (int i = digits.size() - 1; i >= 0; --i) {
            if (digits[i] < 9) {
                digits[i] += 1;
                return digits;
            }
            digits[i] = 0;
        }
        digits.insert(digits.begin(), 1);
        return digits;
    }
};

 

[LintCode] Plus One 加一运算

原文:http://www.cnblogs.com/grandyang/p/5794220.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!