题目描述:
给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。
示例1:
输入:digits = [1,2,3]
输出:[1,2,4]
解释:输入数组表示数字 123。
示例2:
输入:digits = [4,3,2,1]
输出:[4,3,2,2]
解释:输入数组表示数字 4321。
示例3:
输入:digits = [0]
输出:[1]
当数组中全为9时数组长度需要加1,其他情况正常算。
C++代码如下:
class Solution {
public:
vector<int> plusOne(vector<int>& digits) {
int count=0;
vector<int>v;
//计算容器中9的个数
for(int j=0;j<digits.size();j++)
{
if(digits[j]==9)
{
count++;
}
}
//处理全为9的情况
if(count==digits.size())
{
v.push_back(1);
for(int k=0;k<count;k++)
{
v.push_back(0);
}
return v;
}
else
{
for(int i=digits.size()-1;i>=0;i--)
{
if(digits[i]==9)
{
digits[i]=(digits[i]+1)%10;
}
else
{
digits[i]=digits[i]+1;
break;
}
}
return digits;
}
}
};
JAVA代码如下:
class Solution {
public int[] plusOne(int[] digits) {
//获取长度
int len = digits.length;
for (int i = len-1; i >= 0; i--) {
digits[i] = (digits[i] + 1) % 10;
//第一种和第二种情况,如果此时某一位不为 0 ,则直接返回即可。
if (digits[i] != 0) {
return digits;
}
}
//第三种情况,因为数组初始化每一位都为0,我们只需将首位设为1即可
int[] arr = new int[len+1];
arr[0] = 1;
return arr;
}
}
执行结果: