您的位置:首页 > 其它

【LeetCode】66. Plus One (2 solutions)

2014-12-09 23:31 260 查看
Plus One

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返回。

如果直到最高位仍有进位,则在数组头部插入1,结果为100…0

解法一:

inplace但插入操作时会产生数组的移位

class Solution {
public:
vector<int> plusOne(vector<int> &digits) {
int carry = 1;
for(int i = digits.size()-1; i >= 0; i --)
{
int sum = digits[i]+carry;
carry = sum / 10;
digits[i] = sum % 10;
if(carry == 0)
break;
}
if(carry == 1)
digits.insert(digits.begin(), 1);
return digits;
}
};




解法二:

inplace且数组不用移位

class Solution {
public:
vector<int> plusOne(vector<int> &digits) {
for(int i = digits.size()-1; i >= 0; i --)
{
if(digits[i] <= 8)
{
digits[i] += 1;
return digits;
}
else
{//9
if(i != 0)
digits[i] = 0;
else
{
digits[0] = 1;
digits.push_back(0);
return digits;
}
}
}
}
};


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: