LC66.AddOne


题目

用一个vector<int>表示一个十进制非负整数
输入vector<int>
输出末位+1后的新数组

题解

#include <vector>
class Solution
{
public:
	std::vector<int>addOne(std::vector<int>& digits)
	{
		for (auto it = digits.rbegin(); it != digits.rend(); ++it)
		{
			if (*it < 9)
			{
				(*it)++;
				return digits;
			}
			*it = 0;
		}
		digits.insert(digits.begin(), 1);
		return digits;
	}
};

class Solution_Recursion
{
private:
	bool plusOneRecursive(std::vector<int>& digits, int index)
	{
		if (index < 0) return true;

		if (digits[index] < 9)
		{
			digits[index]++;
			return false;
		}
		else
		{
			digits[index] = 0;
			return plusOneRecursive(digits, index - 1);
		}
	}

public:
	std::vector<int> plusOne(std::vector<int>& digits)
	{
		if (plusOneRecursive(digits, digits.size() - 1)) digits.insert(digits.begin(), 1);

		return digits;
	}
};