力扣简66 +1

还是暴力写法 转成数加一再压回 下面有错误 对于超过int类型的整数出错 还没有改好
 
class Solution {
    public int[] plusOne(int[] digits) {

        int sum=0;
        int count=0;
        int flag=0;
        int l=digits.length;
        for(int i=0;i<l;i++) {
            sum=(int)(sum+digits[i]*Math.pow(10,l-i-1));
            if (digits[i]==9) {
                count++;
            }
        }
        sum=sum+1;
//      System.out.println(sum);
        if(count==l) {
            int[]res = new int[l+1];
            while(sum!=0) {
                res[l-flag]=sum % 10;
                sum=sum/10;
                flag++;
            }
//          for(int i:res) {
//              System.out.print(i);
//          }
            return res;
        }
        else {
            int[]res=new int[l];
            while(sum!=0) {
                res[l-flag-1]=sum % 10;
                sum=sum/10;
                flag++;
        }
//          for(int i:res) {
//              System.out.print(i);
//          }
            return res;
        }
        
    
    }
}
 
看了题解自己写出来的代码
最开始有点小问题 :一是在求解第一个9的循环里没有包含digits[0] ;二是在最后一个9在中间位置时前一位加一的这种情况下,前一位找错一位
class Solution {
    public int[] plusOne(int[] digits) {
        
        int l=digits.length;
        int flag=-1;
        for(int i=l-1;i>=0;i--) {
            if(digits[i]==9) {
                flag++;
            }
            else {
                break;
            }
        }
        
        if(flag==-1) {
            digits[l-1]=digits[l-1]+1;
            
//          for(int i:digits) {
//              System.out.print(i);
//          }
            
            return digits;
        }
        else if(flag==l-1) {
            digits=new int[l+1];
            digits[0]=1;
            
//          for(int i:digits) {
//              System.out.print(i);
//          }
            
            return digits;
        }
        else {
            digits[l-flag-2]=digits[l-flag-2]+1;
            for(int j =l-flag-1;j<l;j++) {
                digits[j]=0;
            }
            
//          for(int i:digits) {
//              System.out.print(i);
//          }
            
            return digits;
        }

    }
}
posted @ 2022-05-11 12:42  Ssshiny  阅读(24)  评论(1)    收藏  举报