[LeetCode]66. Plus One
题目描述
思路
在最后一位加1,考虑进位和多出一位的情况,水题
代码
#include <iostream>
#include <vector>
using namespace std;
class Solution {
public:
vector<int> plusOne(vector<int>& digits) {
int carry, len = digits.size();
carry = (digits[len - 1] + 1) / 10;
digits[len - 1] = (digits[len - 1] + 1) % 10;
for (int i = len - 2; i >= 0; --i) {
if (carry == 0)
break;
int temp = (digits[i] + carry) / 10;
digits[i] = (digits[i] + carry) % 10;
carry = temp;
}
if (carry) {
reverse(digits.begin(), digits.end());
digits.push_back(carry);
reverse(digits.begin(), digits.end());
}
return digits;
}
};
int main() {
vector<int> nums = { 1, 1 };
Solution s;
vector<int> res = s.plusOne(nums);
for (int num : res) {
cout << num << " ";
}
cout << endl;
system("pause");
return 0;
}