侧边栏壁纸
博主头像
阿里灰太狼博主等级

You have to believe in yourself . That's the secret of success.

  • 累计撰写 104 篇文章
  • 累计创建 50 个标签
  • 累计收到 12 条评论

目 录CONTENT

文章目录

leetcode-66. 加一

阿里灰太狼
2022-09-15 / 0 评论 / 0 点赞 / 786 阅读 / 374 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-09-15,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

66. 加一0
66. 加一1

JAVA解法

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

评论区