leetcode-初级算法-数组-加1

题目:

给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。

最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。

你可以假设除了整数 0 之外,这个整数不会以零开头。

解决方法:

   //待优化:能支持的最大的数字的位数有限
    public int[] plusOne(int[] digits) {
     long number=0; //暂时记录数字
     int index=1;   //记录加1后的位数
     long numberPlusOne=0; //记录加1后的数字
         for(int i=digits.length-1;i>=0;i--) {
            number+=digits[i]*Math.pow(10, digits.length-1-i);
      }
         System.out.println("number: "+number);
         //数字加1
         number+=1;
         numberPlusOne=number;
         System.out.println("number: "+numberPlusOne);
         long divisor=10;
         while(number/divisor!=0) {
          index++;
          divisor=10*divisor;
         }
         System.out.println("index: "+index);
         //得到每个位的数字
         int digitPlusOne[]=new int[index];
         int i=0;
         while(i<index) {
            digitPlusOne[i]=(int) (numberPlusOne/(1*Math.pow(10, index-1-i)));
            numberPlusOne= numberPlusOne-(long)(digitPlusOne[i]*(1*Math.pow(10, index-1-i)));
            i++;
         }
         return digitPlusOne;
    }

你可能感兴趣的:(加1,leetcode,leetcode)