1.题目
You are given a large integer represented as an integer array digits
, where each digits[i]
is the ith
digit of the integer. The digits are ordered from most significant to least significant in left-to-right order. The large integer does not contain any leading 0
's.
Increment the large integer by one and return the resulting array of digits.
力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
2.思路
考虑一下特殊的情况:
1.我们只需要考虑反向遍历一下数组
2.如果最后一个数不等于9.直接最后一个数+1 返回就可以了
3.如果为9,我们+1之后,还需要考虑进位
所以我们设置一个进位carry = 1 ; 每次让数组的数+carry,每次取它的当前位的值和进位标志
为防止都是999之类的情况,最后再来检查标志位
3.代码
class Solution {
public:
vector<int> plusOne(vector<int>& digits) {
int len = digits.size();
int carry = 1 ; //设置一个进位标志位
for (int i = len -1 ; i >= 0; --i)
{
int sum = digits[i] +carry ;
digits[i] = sum %10 ; //除10 取模
carry = sum / 10; //除10 取当前进位
}
if(carry != 0 )
{
digits.insert(digits.begin(), carry);
//这里insert(digits.begin(), carry)是 把carry插入到digits最前面
}
return digits;
}
};