Given a non-negative integer represented as a non-empty array of digits, plus one to the integer.
You may assume the integer do not contain any leading zero, except the number 0 itself.
The digits are stored such that the most significant digit is at the head of the list.
从后往前模拟操作。在原数组上进行操作,如果最后还有一个进位则新建一个长度加一的数组。
public class Solution {
public int[] plusOne(int[] digits) {
int carry = 1;
for(int i=digits.length-1; i>=0; i--){
int temp = carry + digits[i];
carry = temp / 10;
digits[i] = temp % 10;
if(carry==0) break;
}
if(carry==1){
int[] ans = new int[digits.length+1];
ans[0] = 1;
for(int i=0; i<digits.length; i++){
ans[i+1] = digits[i];
}
return ans;
}else{
return digits;
}
}
}
看到别人的方法更为简略
public int[] plusOne(int[] digits) {
int n = digits.length;
for(int i=n-1; i>=0; i--) {
if(digits[i] < 9) {
digits[i]++;
return digits;
}
digits[i] = 0;
}
int[] newNumber = new int [n+1];
newNumber[0] = 1;
return newNumber;
}