加一

描述

给定一个非负数,表示一个数字数组,在该数的基础上+1,返回一个新的数组。

该数字按照大小进行排列,最大的数在列表的最前面。

样例
给定 [1,2,3] 表示 123, 返回 [1,2,4].
给定 [9,9,9] 表示 999, 返回 [1,0,0,0].

考察点
  • 一开始用的是int或long,数字可能超出界限
  • 使用数字最后面加,满10,前一位加一,直到不用进位了
答案
public int[] plusOne(int[] digits) {
    // Write your code here
    // Write your code here
    int size = digits.length;
    int tmpIndex = size - 1;
    boolean isFinish = false;
    while (tmpIndex >= 0 && !isFinish) {
        int result = digits[tmpIndex] + 1;
        if (result > 9) {
            digits[tmpIndex] = 0;
            tmpIndex--;
        } else {
            digits[tmpIndex] = result;
            isFinish = true;
        }

    }
    if (tmpIndex == -1) {
        //需要加一位
        int[] result = new int[size + 1];
        result[0] = 1;
        for (int i = 0; i < size; i++) {
            result[i + 1] = digits[i];
        }
        return result;
    }

    return digits;
}