66.加一

2020-02-29  本文已影响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;
};
上一篇 下一篇

猜你喜欢

热点阅读