给定一个非负数,表示一个数字数组,在该数的基础上+1,返回一个新的数组。
该数字按照数位高低进行排列,最高位的数在列表的最前面。
样例
样例 1:
输入:[1,2,3]
输出:[1,2,4]
样例 2:
输入:[9,9,9]
输出:[1,0,0,0]
class Solution {
public:
/**
* @param digits: a number represented as an array of digits
* @return: the result
*/
vector<int> plusOne(vector<int> &digits) {
// write your code here
int len=digits.size();
if(digits[len-1]!=9) digits[len-1]+=1;
else if(digits[0]==9&&len==1){digits[0]=1; digits.push_back(0);}
else
{
for (int i = len-1; i > 0; i--) {
/* code */
if(digits[i]==9&&i==len-1||digits[i]==10) {digits[i]=0; digits[i-1]+=1;}
else break;
}
if(digits[0]==10||digits[0]==0)
{
digits[0]=0;
vector<int>::iterator it=digits.begin();
digits.insert(it,1);
}
}
return digits;
}
};```