问题描述:
我花费了大量的时间,就是因为问题的描述没有真正的看懂,哭哭啼。问题是,给定一个非负数,用一个数组表示,它的高位存在了数组的最高位,也就是digits[0]是存的高位,真的是很强歧义,实现加1的操作,敲黑板的是,如果最高位有进位,那么需要补充一位,为1。我是用了向量的插入操作,在向量开始的地方,插入1.
我的AC的代码,击败了百分之98,成功的地方在于,我是没有进位之后,直接就返回了,因为没有进位之后,其余的数都不会发生变化
class Solution {
public:
vector<int> plusOne(vector<int>& digits) {
int length=digits.size();
int flag=0;
if(digits[length-1]==9)
{
digits[length-1]=0;
flag=1;
}
else
{
digits[length-1]+=1;
}
for(int i=length-2;i>=0;i--)
{
if (flag==1)
{
flag=0;
if(digits[i]==9)
{
flag=1;
digits[i]=0;
}
else
{
digits[i]+=1;
return digits;
}
}
}
if(flag==1)
{
digits.insert(digits.begin(),1);
}
return digits;
}
};
补充:向量的插入知识,.begin从头插入,.end()和.push_back都是从尾插入。
插入的函数 insert(location,n,element),插入的位置,数量,以及元素