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.
class Solution
{
public:
vector<int> plusOne(vector<int> &digits)
{
if (digits.empty())//检查输入向量是否为空
return digits;
int nSize = digits.size(), nFlag = 1;//初始化尺寸和进位标记
vector<int> vnResult(nSize);
for (int nTemp = nSize - 1; nTemp >= 0; nTemp--)
{
if (digits[nTemp] + nFlag <= 9)//如果当前位加上进位值小于10,则将进位值设为0
{
vnResult[nTemp] = digits[nTemp] + nFlag;
nFlag = 0;
}
else
{
vnResult[nTemp] = digits[nTemp] + nFlag - 10;
}
}
if (nFlag)//如果进位值还为1则在最前边插入一个1
{
vnResult.insert(vnResult.begin(),1,1);
}
return vnResult;
}
};