给定一个非负数,表示一个数字数组,在该数的基础上+1,返回一个新的数组。
该数字按照大小进行排列,最大的数在列表的最前面。
样例
给定 [1,2,3] 表示 123, 返回 [1,2,4].
给定 [9,9,9] 表示 999, 返回 [1,0,0,0].
加和进位分开处理
先给最后一位加上1,然后再从后往前遍历处理进位,最高位如果还有进位的话就先push_back一个1进入结果。
vector<int> plusOne(vector<int> &digits) {
vector<int> res;
*(digits.end()-1)+=1; //先把1加上,然后再处理进位
for(auto end=digits.end()-1;end!=digits.begin();end--)
{
if(*end>=10)
{
*end=*end%10; //当前为取余
*(end-1)+=1; //前一位加1
}
}
if(*digits.begin()>=10)
{
*digits.begin()%=10;
res.push_back(1);
}
for(auto d:digits)
{
res.push_back(d);
}
return res;
// write your code here
}
网友评论