leetcode 66题

Posted by franki on November 2, 2020

leetcode 66题 加一

给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。

最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。

你可以假设除了整数 0 之外,这个整数不会以零开头。

示例 1

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

示例 2

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

题解:

思路

最后一位开始+1,假设不是10,就直接返回,若是10就继续++ 如果循环完了,说明数组里面的全是9,这样的话,就直接让原来数组为[1, 0, 0, 0, 0…]

代码

function plusOne(arr) {
    for (var i = arr.length-1; i >= 0; i--) {
        arr[i]++;

        arr[i] = arr[i] % 10;
        if (arr[i] !== 0) {
            return arr;
        }
    }

    arr = new Array(arr.length + 1).fill(0);
    arr[0] = 1;
    return arr;
}

复杂度分析

  • 时间复杂度: O(n)
  • 空间复杂度: O(1)