执行结果:通过
显示详情
执行用时 :8 ms, 在所有 C++ 提交中击败了53.00%的用户
内存消耗 :8.6 MB, 在所有 C++ 提交中击败了14.88%的用户
原理:运用反向遍历,将数组按从小到大依次排序,这有利于解决进位的问题;然后讨论两种特殊情况:1.数字9;2.数字999中的最高位9;3.数字999中的中间项9。
class Solution {
public:
vector<int> plusOne(vector<int>& digits)
{
bool flag = false;
vector<int> ans;
vector<int> RE;
vector<int> ANS;
for(int i = 0; i < digits.size(); i++)
{
int D = digits.at(i);
if(i == digits.size()-1)
{
D++;
}
ans.push_back(D);
}
for(int i = ans.size()-1; i >= 0 ; i--)
{
cout<<ans.at(i)<<endl;
int D1 = ans.at(i);
if(flag == true)
{
D1 = D1 + 1;
flag = false;
}
if(D1 == 10 && ans.size() == 1)
{
RE.push_back(0);
RE.push_back(1);
break;
}
else if(i == 0 && D1 == 10)
{
//cout<<"here"<<endl;
RE.push_back(0);
RE.push_back(1);
break;
}
else if(D1 == 10 && i != 0)
{
flag = true;
D1 = 0;
}
RE.push_back(D1);
}
for(int i = RE.size()-1; i >= 0; i--)
{
//cout<<RE.at(i)<<endl;
ANS.push_back(RE.at(i));
}
return ANS;
}
};