美文网首页
每天一题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