66. Plus One - jiejackyzhang/leetcode-note GitHub Wiki

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.

Array类题目。

这道题目的注意点是处理进位。 不过根据数字的性质可以采用一些小技巧。 若没有产生进位,则加一后即可返回结果;否则该位必为9,加一后变为0,继续计算前一位数。 若全部数字处理完仍未返回结果,说明必然在最高位也产生进位,则最后的结果必然为"1(0)*"的形式,长度为原长度加1。

public class Solution {
    public int[] plusOne(int[] digits) {
        int len = digits.length;
        for(int i = len-1; i >= 0; i--) {
            if(digits[i] < 9) {
                digits[i]++;
                return digits;
            }
            digits[i] = 0;
        }
        int[] newNumber = new int[len+1];
        newNumber[0] = 1;
        return newNumber;
    }
}