题目
Given a non-negative number represented as an array of digits, plus one to the number.
The digits are stored such that the most significant digit is at the head of the list.
//给一个用数组表示的数,加1后还是数组表示
算法
复杂度:O(N)
// 从右往左,如果到[0] 位还有进位,则需要(n.length_1)的数组
class Solution {
public:
vector<int> plusOne(vector<int>& digits) {
vector<int> tp(digits), ret;
// 最低位加1
tp[tp.size()-1]++;
// 从低位到高位检查每一位是否需要进位
for(int i=tp.size()-1;i>0;i--)
if(tp[i]>=10){
tp[i]%=10;
tp[i-1]++;
}else break;
//若最高位需要进位,需要在vector 加一个元素
if(tp[0]>=10){
ret.push_back(1);
tp[0]%=10;
}
// 从最高位到低位依次将每个元素存入ret
for(int i=0;i!=(int)tp.size();++i)
ret.push_back(tp[i]);
return ret;
}
};