当前位置:   article > 正文

算法一(加一)_算法 点击加一

算法 点击加一

执行代码及结果:

 思路

         该题数组末位加一输出结果应该考虑三种情况:

       1. 当数组末位不为9时,数组末位元素+1直接输出

       2.当只有数组末位元素为9而前一位元素不为9时,它会向前一位进一位,末位元素归0,前一位元素加一

       3.当所有元素都为9时数组长度+1,首位元素为1,其他元素为0.

总代吗

  1. import java.util.Scanner;
  2. class Solution {
  3. public int[] plusOne(int[] digits) {
  4. for(int i=digits.length-1;i>=0;i--)
  5. {
  6. digits[i]=digits[i]+1;
  7. // 注意 if(digits[i]%10!=0)return digits;写法是错误的
  8. digits[i]=digits[i]%10;
  9. //如果末位元素不为9使用return结束循环直接返回末位元素加1的数组,所以执行下一次循环说明原数组前一个元素为9
  10. if(digits[i]!=0)return digits;
  11. //如果第一次循环后没有退出循环说明末位元素为9,此后依次对前一个元素+1求余判断是否超过0
  12. }
  13. //如果for循环都遍历完了说明数组中所有元素都是9,此时创建一个长度比原来数组长度多一的数组,首位为1,其余为0
  14. digits=new int[digits.length+1];
  15. digits[0]=1;
  16. return digits;
  17. }
  18. public static void main(String []args) {
  19. int []digits=new int[100];
  20. @SuppressWarnings("resource")
  21. Scanner input=new Scanner(System.in);
  22. String ar=input.nextLine().toString();
  23. ar=ar.replace('[',' ');
  24. ar=ar.replace(']',' ');
  25. String[]arr=ar.split("\\s+");
  26. for(int i=0;i<arr.length;i++) {
  27. digits[i]=Integer.parseInt(arr[i]);
  28. }
  29. Solution a=new Solution();
  30. System.out.println(a.plusOne(digits));
  31. }
  32. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/63443
推荐阅读
相关标签
  

闽ICP备14008679号