小小程序媛  
得之坦然,失之淡然,顺其自然,争其必然

题目

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.

分析

该题目要求:将一整数按位存储在vector中,对其实现+1操作,返回结果。
是一道简单题目,对存储序列vector中元素,倒序遍历,末位+1,若<10可直接返回,否则,保存进位加之到下一位,循环至最高位。
若此时,进位依然为1,则新建长度增一的vector首位为1,其余为0,返回即可。

AC代码


class Solution {
public:
    vector<int> plusOne(vector<int>& digits) {
        int len = digits.size();

        if (len == 0)
            return digits;

        int carry = 1;
        for (int i = len - 1; i >= 0; --i)
        {
            digits[i] += carry;
            if (digits[i] >= 10)
            {
                digits[i] -= 10;
                carry = 1;
                continue;
            }
            else{
                carry = 0;
                break;
            }
        }

        if (carry == 0)
            return digits;
        else
        {
            vector<int> v;
            v.push_back(1);
            for (int i = 0; i < len; i++)
                v.push_back(0);
            return v;
        }
    }
};

GitHub测试程序源码

posted on 2015-08-18 15:38  Coding菌  阅读(112)  评论(0编辑  收藏  举报