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,发现大于10就置为0,在前一位+1,就和小时候用竖式做加法一样。
解:
class Solution {
public:
vector<int> plusOne(vector<int>& digits) {
if(digits[digits.size() - 1] + 1 < 10)
{
digits[digits.size() - 1] += 1;
return digits;
}
for(int idx = digits.size() - 1; idx >= 0; idx--)
{
if(digits[idx] + 1 < 10)
{
digits[idx] += 1;
break;
}
else
{
digits[idx] = 0;
}
}
if(digits[0] == 0)
{
vector<int> resultDigits;
resultDigits.push_back(1);
for(int idx = 0; idx < digits.size(); idx++)
{
resultDigits.push_back(digits[idx]);
}
return resultDigits;
}
else
return digits;
}
};