PlusOne
Problem description
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.
- https://leetcode.com/problems/add-two-numbers/
- https://leetcode.com/problems/add-binary/
- https://leetcode.com/problems/plus-one/
Solution
public int[] plusOne(int[] digits) {
int length = digits.length;
digits[length - 1] = digits[length - 1] + 1;
for (int i = length - 1; i > 0 && digits[i] == 10; i--) {
digits[i] = 0;
digits[i - 1] = digits[i - 1] + 1;
}
if (digits[0] == 10) {
digits[0] = 0;
int[] returnDigits = new int[length + 1];
returnDigits[0] = 1;
for (int i = 1; i < returnDigits.length; i++) {
returnDigits[i] = digits[i-1];
}
return returnDigits;
} else {
return digits;
}
}