一、思路
需要考虑到进位的问题
二、code
class Solution {
public:
vector<int> plusOne(vector<int>& digits) {
int n=digits.size();
int carry=1;//将初始进位设置为1是因为我们想要实现加1的操作。在加1的过程中,我们需要一个初始进位来确保正确的计算。如果将初始进位设置为0,那么就不会进行加1的操作,而是返回原始的数字
for(int i=n-1;i>=0;i--)
{
digits[i]+=carry;
carry=digits[i]/10;//表示进位的数字
digits[i]=digits[i]%10;//表示当前数字
}
if(carry>0)
{
digits.insert(digits.begin(),carry);//如果最高位有进位,插入新的最高位 将 carry 插入到 digits 数组的开头,也就是索引为 0 的位置,而后续的数字会自动向后移动一个位置。
}
return digits;
}
};
=========================================================================
学到的知识
①
carry=digits[i]/10;//表示进位的数字
digits[i]=digits[i]%10;//表示当前数字
不管进制是多少(2进制、8进制、十进制等)都一致
②digits.insert(digits.begin(), carry);
的调用会将 carry
插入到 digits
数组的开头,也就是索引为 0 的位置,而后续的数字会自动向后移动一个位置。