Given a non-negative number represented as an array of digits, plus one to the number.
The digits are stored such that the most significant digit is at the head of the list.
Analysis:
Idea is simple, sum and carry digit.
Java
public int[] plusOne(int[] digits) {
// IMPORTANT: Please reset any member data you declared, as
// the same Solution instance will be reused for each test case.
// IMPORTANT: Please reset any member data you declared, as
// the same Solution instance will be reused for each test case.
int carry = 0, i = digits.length-1;
digits[i]+=1;
while(digits[i]>=10){
digits[i--]-=10;
if(i>=0)
digits[i]+=1;
else {
carry =1;
break;
}
}
if(carry ==0) return digits;
int[] res = new int[digits.length+1];
for(i=0; i<digits.length;i++){
res[i+1] = digits[i];
}
res[0]=1;
return res;
}
c++
vector<int> plusOne(vector<int> &digits) {
int carry=1, sum=0;
vector<int> result(digits.size(),0);
for(int i=digits.size()-1;i>=0;i--){
sum = carry+digits[i];
carry = sum/10;
result[i] = sum%10;
}
if(carry>0){
result.insert(result.begin(),carry);
}
return result;
}