力扣:探索初级算法——数组篇——加一

题目:加一

力扣:探索初级算法——数组篇——加一_第1张图片

思路

参考链接:Java 数学解题

给定一个非负整数要求加1。重点是要理解这个加1,只加1则所有可能的情况只能是两种:

  1. 除9之外的数字加1;
  2. 数字9

算法:

  1. 从个位 ( 在数组的最右边 ) 开始加1,然后判断需不需要进位,若要进位 则十位上的数也是要加1,然后判断需不需要进位。依次类推每加1,就要判断需不需要进位 ——————可以用for循环来控制
  2. 如何判断 要不要进位呢?只有9加1后才需要进位,9+1=10,10%10=0 , 非9个的个位数 模10 的结果仍然是自己 ——————所以每次加1后把当前的数重新赋值为 自身模10的结果,结果为0,则要进位,继续for循环。 若结果不是0,则说明不需要进位了,直接返回现在的数组即可。
  3. 如果循环完了,还没有return digits,则此时数组中的数字一定都是0,也就是说加1之前的数字全都是9
  4. 那么此时直接把数组长度加1
  5. 把第一个数初始化为1,后面的不管,默认为0即可

代码(java)

class  solution{
  public int[] plusOne(int[] digits){
   for(int i = digits.length - 1; i>=0; i--){
      digits[i]++;
      digits[i] = digits[i] % 10;
      if(digits[i]!=0)   return digits;      
   }
   
     //如果此时循环完了还没return digits,则此时数组中的数字一定都是0,也就是说加1之前的数字是全是9的情况
   digits = new int[digits.length +1];   //那么此时直接把数组长度加1
   digits[0] = 1;                        //把第一个数初始化为1,后面的不管,默认为0即可!!
   return digits;
  }
}

你可能感兴趣的:(力扣刷题笔记)