Plus One
Given a non-negative number represented asan array of digits, plus one to the number.
The digits are stored such that the mostsignificant digit is at the head of the list.
一个数字按位存放在一个数组中。我们现在来给这个数字【加1】。
数据结构作业做过链表的多项式加减乘除吧,这个只要【加1】而已,不要慌。此题不难。
有两个坑:第一,进位要处理完善。第二,进位有可能会使位数会变长,需要做插入操作。
Leetcode的AcceptedSolutions Runtime Distribution(15-06-26)发现58跟66截图是同一张,重新截了
源码:(VS2013)
vector<int> plusOne(vector<int>& digits){
vector<int>::iterator iter = digits.end();
iter--;
*iter += 1;
bool carry = false;
if (10 == *iter)
{
carry = true;
*iter = 0;
}
while (iter != digits.begin())
{
iter--;
if (carry)
{
*iter += 1;
if(10 != *iter) carry = false;
else *iter = 0;
}
}
if (carry)
{
digits.insert(digits.begin(),1);
}
return digits;
}