class Solution {
public:
vector<int> plusOne(vector<int>& digits) {
if(digits.size() == 0) return vector<int>();
int len = digits.size();
if(count(digits.begin(), digits.end(), 9) == len) {
/*vector<int> res;
res.push_back(1);
for(int i = 0; i < len; i++) {
res.push_back(0);
}
return res; */
//上面部分可以用一条insert代替,得好好看看STL了
digits.insert(digits.begin(), 1);
}
int carrier = 0; //进位
for(int i = len - 1; i >= 0; i--) {
if(i == len - 1) digits[i] += carrier + 1;
else digits[i] += carrier;
carrier = digits[i] / 10;
digits[i] %= 10;
//优化:可以判断一下进位是否为零,提前结束
}
return digits;
}
};
class Solution {
public:
vector<int> plusOne(vector<int>& digits) {
for(int i = digits.size() - 1; i >= 0; i--)
{
++digits[i];
if(digits[i] != 10) //如果该位没有继续产生进位,则直接return 结果
return digits;
else
digits[i]=0; //进位
}
digits.insert(digits.begin(), 1); //如果首位也产生进位,才会执行到这条语句,否则循环中已经return了
return digits;
}
};
LeetCode66. 加一
最新推荐文章于 2024-07-22 10:28:03 发布