美文网首页
每天一题LeetCode【第48天】

每天一题LeetCode【第48天】

作者: 草稿纸反面 | 来源:发表于2017-04-15 00:04 被阅读77次

    T66. Plus One【Easy

    题目

    给一个用数组表示的非负整数,加一并返回。

    假设数组除了 0 本身不会零打头(不会有 01,007 这样的数组)。

    高位在数组头部。

    思路

    ① 若不进位则直接++返回

    ② 若进位则我当前位置设为 0,前面的判断是否进位,然后重新执行 ① 和 ②

    ③ 若遇到 99999 这样全是 9 的遍历完都没返回,则给前面加一个 1,返回

    看代码就可以懂了~

    代码

    代码取自 Top Solution,稍作注释

    public int[] plusOne(int[] digits) {
            //获得数字长度
            int n = digits.length;
            //从低位往高位遍历
            for(int i=n-1; i>=0; i--) {
                //若小于9,则直接++,跳出循环返回+1
                if(digits[i] < 9) {
                    digits[i]++;
                    return digits;
                }
            //能执行到这里代表进位了,所以设为 0
            digits[i] = 0;
            }
            //能执行到这里说明前面都是 999999,所以添加一位,设成 1
            int[] newNumber = new int [n+1];
            newNumber[0] = 1;
            return newNumber; 
        }
    

    相关文章

      网友评论

          本文标题:每天一题LeetCode【第48天】

          本文链接:https://www.haomeiwen.com/subject/pqogattx.html