前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >leetcode-66. 加一

leetcode-66. 加一

作者头像
灰太狼学Java
发布2022-10-27 14:56:49
2450
发布2022-10-27 14:56:49
举报
文章被收录于专栏:Java学习驿站Java学习驿站

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. 加一

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-09-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • JAVA解法
  • 题解分析
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档