66. 加一

68 阅读1分钟

66. 加一

当我们对数组 arr 加一时,我们只需要关注 arr 的末尾出现了多少个 9 即可。我们可以考虑如下的三种情况:

  1. 如果 arr 的末尾没有 9,例如 [1,2,3],那么我们直接将末尾的数加一,得到 [1,2,4] 并返回;
  2. 如果 arr 的末尾有若干个 9,例如 [1,2,3,9,9],那么我们只需要找出从末尾开始的第一个不为 9 的元素,即 3,将该元素加一,得到 [1,2,4,9,9]。随后将末尾的 9 全部置零,得到 [1,2,4,0,0] 并返回。
  3. 如果 arr 的所有元素都是 9,例如 [9,9,9,9,9],那么答案为 [1,0,0,0,0,0]。我们只需要构造一个长度比 arr 多 1 的新数组,将首元素置为 1,其余元素置为 0 即可。
var plusOne = function(arr) {
    var n = arr.length;
    for (let i = n - 1; i >= 0; i--) {
        if (arr[i] !== 9) {
            arr[i]++;
            for (let j = i + 1; j < n; j++) {
                arr[j] = 0;
            }
            return arr;
        }
    }
    var res = new Array(n + 1).fill(0);
    res[0] = 1;
    return res;
};