解题思路:在数组中放入一列数,其中数组下标高的位低位,数组下标低的位高位,把数组中的数看成一个int型的整数,进行加一操作,如果在个位上产生进位,则要对十位做进位处理,若十位产生进位,则要对百位进行进位处理……一次类推,若最后所得结果的最高位为0,则要在数组的最前面加入一个进位位1。
由于此题仅仅进行加一操作所以只要判断在加一之前的数字是否为9,若是,则把改为置为0,然后再进位。最后判断最高位是否为0,若是则使用v.insert(v.begin(),1)方法在数组最前面插入1即可。看了一下讨论区,在做最后一步时:首先在最高位置为1,然后在数组末尾添加0(这样做的原因:当最高位为0时,说明后面比它低的所有位都为0)
源码附上:
class Solution {
public:
vector<int> plusOne(vector<int>& digits) {
int length=digits.size();
for( int i=length-1;i>=0;i--)
{
if(digits[i]==9)
digits[i]=0;
else
{
digits[i]++;
return digits;
}
}
if(digits.front()==0)
digits.insert(digits.begin(),1);
return digits;
}
};