LeetCode-easy-PlusOne

Plus One

问题较为简单,主要是要处理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;
	}

}
posted @ 2020-01-08 18:10  Yekko  阅读(96)  评论(0编辑  收藏  举报