您的位置:首页 > 其它

Leetcode: Plus One

2013-12-22 22:03 435 查看
Given a number represented as an array of digits, plus one to the number.

比较简单,写的时候有点担心全部为9时的时间复杂度,不过通过了。

class Solution {
public:
vector<int> plusOne(vector<int> &digits) {
int size = digits.size();
if (size == 0) return digits;

if (digits[size-1] != 9) {
digits[size-1] += 1;
}
else {
int last_not_nine = size - 2;
while (last_not_nine >= 0 && digits[last_not_nine] == 9) {
--last_not_nine;
}
if (last_not_nine >= 0) {
++digits[last_not_nine];
}
else {
digits.resize(size+1);
digits[0] = 1;
++last_not_nine;
++size;
}
for (++last_not_nine; last_not_nine < size; ++last_not_nine) {
digits[last_not_nine] = 0;
}
}

return digits;
}
};

===========================第二次=========================

直观的方法。class Solution {
public:
vector<int> plusOne(vector<int> &digits) {
int i = digits.size() - 1;
for (; i >= 0; --i) {
if (digits[i] != 9) {
++digits[i];
break;
}
else {
digits[i] = 0;
}
}

if (i < 0) {
digits.insert(digits.begin(), 1);
}

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