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;
}