leetcode-66. 加一

2022-10-27 14:56:49 浏览数 (1)

JAVA解法

代码语言:javascript复制
class Solution {
    public int[] plusOne(int[] digits) {
        // 获取数组长度
        int n = digits.length;
        // 从后开始,只要不是 9 就加一,不管有多少个 9 ,
        // 都在最后一个 9 的前一个数加一即可
        for (int i = n - 1; i >= 0; --i) {
            if (digits[i] != 9) {
                  digits[i];
                for (int j = i   1; j < n;   j) {
                    digits[j] = 0;
                }
                // 返回结果集
                return digits;
            }
        }
        // 能到这里,说明 digits 中所有的元素均为 9
        // 创建一个比原数组大小大一空间的新数组
        int[] ans = new int[n   1];
        // 把第 0 个数置为 1 其他全为 0 即可
        ans[0] = 1;
        // 返回结果集
        return ans;
    }
}

题解分析

  根据题目要求,我们先获取数组长度并赋值为 n,一个数的最低位在最左边,因此从最左边开始遍历。由于是进制数,因此要遇 9 进 1,假设有多个 9 如 136999 这种,就得连续进位,因此写进 for 循环,只要是 9 都跳过,直到遇到非 9 的数则加一,后边所有跳过的 9 全置为 0。   那还有一种情况就是给的数全部是 9 如 9999,那么它加一后是 10000,比原数组空间还大,因此要新建一个数组,长度为原数组长度加一,再将数组第 0 位置的数赋值为 1,其他默认为 0 即可。

leetcode原题:66. 加一

0 人点赞