Plus One

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.

把一个非负整数存成数组形式,比如123就成了[1,2,3] 然后在末尾加一求得[1,2,4]

这题考点在于处理进位和内存分配。如果是[9,9]那就要生成一个新数组[1,0,0]

解法:从后向前遍历数组,如果当前位置上元素为9则变成0。循环后发现第一位为0则需要重新分配新的数组才能在头部加1

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