66 Plus One – Easy¶
Problem:¶
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.
Thoughts:¶
This is a little tricky question. The interface requires to return int[], but you are not sure what’s the length for the returning array. Given input array, int[] digits, it could be digits.length or digits.length + 1.
Solutions:¶
public class Solution {
public int[] plusOne(int[] digits) {
int carry = 1;
int i = digits.length - 1;
while (i >=0 && digits[i] == 9) {
i --;
}
if (i == -1) {
int[] result = new int[digits.length + 1];
result[0] = 1;
return result;
}
// If it's find to modify int[] digits, then can only modify digit at index i
// This will save lots of unnecessary operation.
int[] result = new int[digits.length];
result[i] = digits[i] + 1;
for (int j = 0; j < i; j ++) {
result[j] = digits[j];
}
return result;
}
}