java简单算法:加一

问题

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

解决

  • 解法一:
//这里分为全是9和不是全是9,也可以分为最后一位是9,最后一位不是9
class Solution{
    public int[] plusOne(int[] digits){
        int n=digits.length;                             // 不是全部为9
        for(int i=n-1;i>=0;--i){
            if(digits[i]!=9){
                ++digits[i];
                for(int j=i+1;j<n;++j){         //注意这里是++j,因为j会随着i的减小而减小
                    digits[j]=0;
                }
                return digits;
            }

        }
        int[] arr2=new int[n+1];                            // 全部是9
        arr2[0]=1;
        return arr2;

    }
}

// 以降序的方式储存整数数值
// 题目翻译,数组的每一个元素只能是单个的数字,即一位整数,将数组最后1位加1,如果等于10就返回[1,0]
// 想简单了,题目的意思是,将数组说有数字拼接到一起形成一个新的数字,再加上1,将结果再拆分为单个数字,返回数组
  • 解法二:
class Solution {
    public int[] plusOne(int[] digits) {
        int len = digits.length;
        for (int i = len - 1; i >= 0; i--) {            //一样再判断是否全是9
            digits[i] = (digits[i] + 1) % 10;
            if (digits[i] != 0) {
                return digits;
            }
        }
        digits = new int[len + 1];
        digits[0] = 1;
        return digits;
    }
}

总结

  • 两种解法都是在分为是否全是9和不是全是9来判断的,第二种的化看起来要简单点.
posted @   new_monkey  阅读(598)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示