题目描述

给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。

最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。

你可以假设除了整数 0 之外,这个整数不会以零开头。

示例一

输入: [1,2,3]
输出: [1,2,4]
解释: 输入数组表示数字 123。

示例二

输入: [4,3,2,1]
输出: [4,3,2,2]
解释: 输入数组表示数字 4321。

题目分析

  1. 注意单纯的相加问题,如109,加一则为110.
  2. 注意进位问题。如果原来是99,则加一之后为100。

参考代码

class Solution {
public:
vector<int> plusOne(vector<int>& digits) {
int k = 10 ,sum = 0, co = 0 , len = digits.size() -1;
for(int i = len ; i >= 0 ; --i)
{
if(i == digits.size()-1) {digits[i] = digits[i] + 1 + co ; co = 0 ;}
else {digits[i] += co ; co = 0 ;}
int tmp = digits[i] ;
if(tmp >= 10) {digits[i] -= 10 ; co = 1 ;}
if(i == 0 && co == 1 ) {digits.insert(digits.begin(),1);}
}
return digits;
}
};

谢谢访问