Skip to content

66. 加一

解题过程

INFO

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

javascript
/**
 * @link https://leetcode.cn/problems/plus-one/
 * @title 66. 加一
 * @description 给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。

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

你可以假设除了整数 0 之外,这个整数不会以零开头
 * @param {number[]} digits
 * @return {number[]}
 */
// 解法一
// 思路:将数组转数字累加之后再转数组
var plusOne = function (digits) {
  let num = BigInt(digits.join(''))
  num++
  return (num + '').split('').map(Number)
};

// 解法二
// 思路:通过数组最后元素计算加一计算即可,如果是 9 的数字进行置换为 0,如果不是则累加返回
var plusOne = function (digits) {
  for (let i = digits.length - 1; i >= 0; i--) {
    if (digits[i] === 9) {
      digits[i] = 0
    } else {
      digits[i]++
      return digits
    }
  }

  // 全是 9 的数字重新生成新的数字数组
  return [1, ...digits]
}

// const result = plusOne([1, 2, 3]) // [1,2,4]
// const result = plusOne([4, 3, 2, 1]) // [4,3,2,2]
// const result = plusOne([0]) // [1]
// const result = plusOne([9]) // [1, 0]
// const result = plusOne([9, 9]) // [1, 0, 0]
const result = plusOne([6, 1, 4, 5, 3, 9, 0, 1, 9, 5, 1, 8, 6, 7, 0, 5, 5, 4, 3]) // [6,1,4,5,3,9,0,1,9,5,1,8,6,7,0,5,5,4,4]
console.log(result)

解题感受

优质题解