Description
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.
Solution
Iteration
public class Solution {
public int[] plusOne(int[] digits) {
int carry = 1;
for (int i = digits.length - 1; i >= 0; --i) {
int val = digits[i] + carry;
digits[i] = val % 10;
carry = val / 10;
}
if (carry == 0) return digits;
int[] newDigits = new int[digits.length + 1];
newDigits[0] = 1; // it's enough because all the rest digits are zero!
return newDigits;
}
}