题目介绍:
Given a non-empty array of digits representing a non-negative integer, plus one to the integer.
The digits are stored such that the most significant digit is at the head of the list, and each element in the array contain a single digit.
You may assume the integer does not contain any leading zero, except the number 0 itself.
Example 1:
Input: [1,2,3] Output: [1,2,4] Explanation: The array represents the integer 123.
Example 2:
Input: [4,3,2,1] Output: [4,3,2,2] Explanation: The array represents the integer 4321.
已知一个数组,目标是将已知数组末尾加1,生成新的数组。题目中的例子已经很明显了,这里不多加赘述。
解题思路:
1:如果给的数组末尾是0-8, 则我们只需要末尾加一即可,我们不需要考虑其他数字位,直接return
2:如果给的数字末尾是9,生成的新数组最后一位变成0,并且向前一个数组进一位,这个时候要看前一位是否为9
如果不是9,则对前一位加1,然后return
3:如果所有数字都是9,则需要在数组中的排头多加一位1,如【9,9】-》【1,0,0】
代码如下:
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];
System.arraycopy(digits,0,newNumber,1,n);
newNumber[0] = 1;
return newNumber;
}
这道题很有趣 !