zoukankan      html  css  js  c++  java
  • 66. Plus One

    一、题目

      1、审题

      

      2、分析

        给出一个整数数组,代表一个整数,其中第一个元素为最高位。求该数组代表的数字值加一后形成的新数组。

       

    二、解答

      1、思路:

        从后向前遍历数组,且元素值 +1,

          ①、若 +1 后数值 < 10,则直接赋该元素值 +1,返回数组。

          ②、 若 +1 后数值 = 10,代表需要进位,则直接赋该元素值 0,继续遍历且下一个元素值 +1。

            令: 当数组第一个元素也需要进位时,则需创建一个比原数组容量大 1 的新数组。

    public int[] plusOne(int[] digits) {
        
            int len = digits.length;
    
            for (int i = len-1; i >= 0; i--) {
                int sum = digits[i] + 1;
                if(sum != 10) {
                    digits[i] = sum;
                    return digits;
                }
                else    // digits[i] + 1  == 10
                    digits[i] = 0; 
            }
            
            int[] arr = new int[len+1];
            arr[0] = 1;
            for(int i = 1; i <= len; i++)
                arr[i] = digits[i-1]; 
            
            return arr;
        }

      

      优化:

      

    public int[] plusOne2(int[] digits) {
            
            int n = digits.length;
            
            for(int i=n-1; i>=0; i--) {
                if(digits[i] < 9) {
                    digits[i]++;
                    return digits;
                }
                
                digits[i] = 0;
            }
            
            int[] newNumber = new int [n+1];
            newNumber[0] = 1;    // 后边的数值必定全为 0
            
            return newNumber;
        }
  • 相关阅读:
    DOM性能小记
    利用tween.js算法生成缓动效果
    小游戏(锅打灰太狼)
    DOM应用实例(寻找房祖名)
    学习总结——DOM
    图片预加载
    删除src值为空的img标签
    2019-08-17 纪中NOIP模拟B组
    [SCOI2015] 小凸玩矩阵
    [JZOJ4899] 雪之国度
  • 原文地址:https://www.cnblogs.com/skillking/p/9685327.html
Copyright © 2011-2022 走看看