您的位置 首页 java

「力扣算法-简单-Java」No.66 加一

题目来源:

题目描述:

解题思路:

数字的组成有以下三种情况:

第一种:每位数字都为9,例如:99

第二种:第2~末位数字中有连续9,或末位为9,例如:199,189

第三种:末位数字不为在0~8之间,例如:188

当数字加+1时:

第一种情况下,生成一个新数组,使得第一位为1,其他位数为0,

第二种情况,遇到9的那一位数置0,前一位加1,并循环判断加1后是否为9,直到不需要进位输出

第三种情况,末位直接加一输出即可

代码如下:

 class Solution {
    public int[] plusOne(int[] digits) {
        int digLen = digits.length;//数组长度

        int i = digLen-1;//计数器
        //末位不为9的情况
        if(digits[i]!=9){
            digits[i]++;
            return digits;
        }else{
            //末位为9
            //仅有一位数且末位为9
            if(digLen==1&&digits[0]==9){
                int[] newDig = new int[2];
                newDig[0]=1;
                return newDig;
            }else{
                while(i<digLen&&i>0){
                    digits[i]=0;
                    i--;
                    if(digits[i]!=9){//某一位数为9
                        digits[i]++;
                        return digits;
                    }else if(digits[0]==9){//所有位数为9
                        int[] digitsNew = new int[digLen+1];
                        digitsNew[0]=1;
                        return digitsNew;
                    }
                }
            }
        }
        return new int[]{};
    }
}  

文章来源:智云一二三科技

文章标题:「力扣算法-简单-Java」No.66 加一

文章地址:https://www.zhihuclub.com/196833.shtml

关于作者: 智云科技

热门文章

网站地图