LintCode 407: Plus One

LintCode 407: Plus One

题目描述

给定一个非负数,表示一个数字数组,在该数的基础上+1,返回一个新的数组。

该数字按照位权大小进行排列,位权最大的数在列表的最前面。

样例

给定 [1,2,3] 表示 123, 返回 [1,2,4].

给定 [9,9,9] 表示 999, 返回 [1,0,0,0].

Sat Feb 26 2017

思路

本题没什么特殊的地方,就是让你手算一个加一运算,用加法器的思想即可。

代码

// 加一
vector<int> plusOne(vector<int>& digits) 
{
    int carry = 0;
    for (vector<int>::iterator iter = digits.end() - 1; iter >= digits.begin(); --iter)
    {
        int now = *iter + carry + (iter == digits.end() - 1 ? 1 : 0);
        *iter = now % 10;
        carry = now > 9;
    }
    if (carry) digits.insert(digits.begin(), 1);
    return digits;
}
posted @ 2017-02-26 17:04  GenkunAbe  阅读(134)  评论(0编辑  收藏  举报