#include <cmath>
#include <vector>
class Solution {
public:
vector<int> plusOne(vector<int>& digits) {
vector<int>result;
unsigned long long c =0,answer;
for (int i=0; i<digits.size(); i++){
c = pow(10, i)*(digits[digits.size()-1-i]) + c;
//cout<<"loop"<<endl;
}
answer = c+1;
while (answer){
result.insert(result.begin(),answer%10);
answer = answer/10;
}
return result;
}
};
长向量时出现错误。例如:对于测试用例,[6,1,4,5,3,9,0,1,9,5,1,8,6,7,0,5,5,4,3]我的代码给出的输出为[6,1,4,5,3,9,0,1,9,5,1,8,6,7,0,5,4,0,9]最后三位数字错误
[如果有人要求您将一个数字加大,您会使用pow
功能吗?明显不是。这就是您应该如何编写函数的方法
vector<int> plusOne(const vector<int>& digits) {
vector<int> result = digits;
int carry = 1;
int i = digits.size() - 1;
while (i > 0 && carry) {
++result[i];
if (result[i] < 10)
carry = 0;
else
result[i] = 0;
--i;
}
if (carry)
result.insert(result.begin(), 1); // overflow, e.g. 9999 => 10000
return result;
}
未经测试的代码。