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

题目:加一

在这里插入图片描述

思路

参考链接: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;
  }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值