66.加一

作者: 最尾一名 | 来源:发表于2020-02-29 21:03 被阅读0次

    原题

    https://leetcode-cn.com/problems/plus-one/

    解题思路

    从数组的最后一位开始,一次加一,如果有进位的话取 10 的模,用 carry 表示进位
    如果 carry === 0 或者到数组最前一位加一之后停止循环。
    如果此时仍有进位,则往数组最前面添加数字 1。

    代码

    /**
     * @param {number[]} digits
     * @return {number[]}
     */
    var plusOne = function(digits) {
        if (!digits.length || !digits[0]) return [1];
        let carry = 1, currentIndex = digits.length - 1;
        while (carry && currentIndex >= 0) {
            carry = digits[currentIndex] + carry > 9 ? 1 : 0;
            digits[currentIndex] = (digits[currentIndex] + 1) % 10;
            --currentIndex;
        }
        if (currentIndex === -1 && carry) {
            digits.unshift(1);
        }
        return digits;
    };
    

    相关文章

      网友评论

          本文标题:66.加一

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