给定一个非负整数组成的非空数组,在该数的基础上加一,返回一个新的数组。
最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
示例 1:
输入: [1,2,3] 输出: [1,2,4] 解释: 输入数组表示数字 123。
示例 2:
输入: [4,3,2,1] 输出: [4,3,2,2] 解释: 输入数组表示数字 4321。
class Solution {
public:vector<int> plusOne(vector<int>& digits) {
//vector<int> ans ;
int flag = 0 ;
int t = digits.size();
if(digits[t-1]+1 == 10)
{
flag = 1;
while(t--)
{
if(digits[t]+flag ==10)
{
digits[t] = 0 ;
flag = 1 ;
}
else
{
digits[t] = digits[t]+flag ;
flag = 0 ;
return digits ;
}
}
}
else
{
digits[t-1] = digits[t-1]+1 ;
return digits ;
}
if(flag == 1)
{
digits.insert( digits.begin(),1);
return digits ;
}
else
return digits ;
}
};
java 版
class Solution {
public int[] plusOne(int[] digits) {
int len = digits.length ;
int flag = 0 ; // 进位标志
if(digits[len-1]+1 == 10 )
{
flag = 1 ;
while(len>0)
{ len-- ;
if(digits[len]+ flag== 10)
{
digits[len] =0 ;
flag = 1 ;
if(len== 0)
{
int ans[] = new int[digits.length+1] ; //这里实际上不用再遍历一次 ,只有一种情况 就是第一个元素为1,后
for(int i = digits.length;i> 0 ;i--) // 面跟length 个0 ; 直接赋值就行
{
ans[i] = digits[i-1] ;
}
ans[0] = 1 ;
return ans ;
}
}
else
{
digits[len] =digits[len]+ flag ;
flag = 0 ;
return digits ;
}
}
}
else
{
digits[len-1] =digits[len-1]+ 1 ;
return digits ;
}
return digits ;
}
}