66. 加一

题目链接:力扣

66. 加一_第1张图片 

解题思路:从后往前遍历数组,加1操作后可能会出现连续的进位,使用pre保存进位,如果pre不为0,就继续向前加上这个进位。如果digits中的所有位加完之后pre还不为0,最高位产生了进位,这个时候需要新建一个数组,数组长度位原数组长度+1,只有digits中的每一位都是9时才会出现这种情况,最高位为1,其他位为0,这时,只需要令新数的第一位为1即可(整数数组默认初始化值为0) 

AC代码

class Solution {
    public static int[] plusOne(int[] digits) {
        int pre = 1;
        for (int i = digits.length - 1; i >= 0; i--) {
            int add = digits[i] + pre;
            digits[i] = add % 10;
            pre = add / 10;
            if (pre == 0) {
                return digits;
            }
        }
        int[] result = new int[digits.length+1];
        result[0] = pre;
        return result;
    }
}

66. 加一_第2张图片

 

你可能感兴趣的:(LeetCode_Java版,算法,leetcode,java)