初级算法-07-加一

  • 题目:
    给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。
    最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
    你可以假设除了整数 0 之外,这个整数不会以零开头。
  • 实例:

输入:digits = [1,2,3]
输出:[1,2,4]
解释:输入数组表示数字 123。

  • 小结:
  1. 后续遍历数组的方式,起始位置,和边界要注意
  2. 取余计算,一般用来计算到达一个值没有(如进位),同时取余计算还可以重新在循环遍历数组中,改变起始位置。
  • 代码:
class Solution {
    public int[] plusOne(int[] digits) {
        if (digits == null || digits.length == 0) return new int[]{};
        for (int i = digits.length-1; i >= 0; i--) {
            digits[i]++;
            digits[i] %= 10; // 最多只能等于10
            if (digits[i] != 0) return digits;
        }
        // 溢出 这时候,一定是1后面加x个0
        digits = new int[digits.length + 1];
        digits[0] = 1;
        return digits;
    }
}

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