Leetcode之66-加一(Plus One)

作者: 北京程序猿 | 来源:发表于2019-04-06 08:03 被阅读2次

    前言

    个人网站

    公众号: 北京程序猿, 网站 : https://yaml.vip

    算法题

    题干

    给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。
    最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。
    你可以假设除了整数 0 之外,这个整数不会以零开头。

    示例

    示例 1:
    
    输入: [1,2,3]
    输出: [1,2,4]
    解释: 输入数组表示数字 123。
    
    示例 2:
    
    输入: [4,3,2,1]
    输出: [4,3,2,2]
    解释: 输入数组表示数字 4321。
    

    Java代码

    public int[] plusOne(int[] digits) {
        if (digits == null || digits.length <= 0) {
            return digits;
        }
        final int LEN = digits.length;
        int digit = 1;
        for (int i = LEN - 1; i >= 0; i--) {
            int bitSum = digits[i] + digit;
            digits[i] = bitSum % 10;
            digit = bitSum / 10;
            if (digit == 0) {
                break;
            }
        }
        if (digit == 0) {
            return digits;
        }
        int[] data = new int[LEN + 1];
        System.arraycopy(digits, 0, data, 1, LEN);
        data[0] = digit;
        return data;
    }
    

    代码解析

    1. 第6行digit赋值为1, 因为要加1
    2. 第11-13行代码, 如果过程中digit为0表示没有进位, 可直接返回
    3. 最后3-4行代码表示digit进位不为0的情况下需将进位放在第一位

    反问

    1. 这道算法题第一次提交就能通过么?

    本文著作权归作者所有。

    商业转载请联系作者获得授权,非商业转载请于文首标明作者姓名,保持文章完整性,并附上出处和文章链接!未按规范转载者,作者保留追究相应责任的权利!

    作者:北京程序猿

    链接:加一

    相关文章

      网友评论

        本文标题:Leetcode之66-加一(Plus One)

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