问题较为简单,主要是要处理9999这种极端情况加一后的元素变化,在c++中直接可以用vector先对每个元素进行判断,如果是9,就对当前置0,再在最后对首元素置一并且再多加一个元素。
//cpp
class Solution {
public:
vector<int> plusOne(vector<int>& digits) {
int length = digits.size();
for (int i = length - 1; i>=0; i--) {//this judge condition must be i>=0,because we need consider just one element conditions.
if (digits[i] == 9)
digits[i] = 0;
else
{
digits[i]++;
return digits;
}
}
digits[0] = 1;
digits.push_back(0);
return digits;
}
};
int* plusOne(int* digits, int digitsSize, int* returnSize) {
int carry = 1;//be used forward add
int i = digitsSize;
int *ret = (int*)malloc(sizeof(int)*(digitsSize + 1));//allocate heap_memory
while (i > 0) {
ret[i] = (digits[i - 1] + carry) % 10;//noted:i is from tail go to head,therefore the head one will be rantom, need judge second number.
carry = (digits[i - 1] + carry) / 10;
i--;
}
if (!ret[1])
{
ret[0] = 1;
*returnSize = digitsSize + 1;
return ret;
}
else
{
*returnSize = digitsSize;
return ret+1;
}
}
原文:https://www.cnblogs.com/Yekko/p/12168088.html