Skip to content

66、加一

js
;(function () {
  /**
   * 66. 加一
   * 给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。
   * 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
   * 你可以假设除了整数 0 之外,这个整数不会以零开头。
   *
   */

  function plusOne(digits: number[]): number[] {
    // 方法一:ERROR - 超过最大安全数就会报错
    // let getNumStr = (+digits.join('') + 1) + ''
    // return getNumStr.split('').map(i => +i)

    // 方法二:遍历
    let isOverTen = false
    let isAdd = false
    let len = digits.length - 1
    for (let i = len; i >= 0; i--) {
      if (!isAdd) {
        let cur = digits[i]
        if (++cur > 9) {
          digits[i] = 0
          isOverTen = true
          isAdd = false
        } else {
          digits[i] = cur
          isAdd = true
        }
      }
    }
    !isAdd ? digits.unshift(1) : null
    return digits

    // 方法三:
  }

  let arr0 = [9]
  console.log(plusOne(arr0))
  // let arr = [1,1,2,2,3,3,4];
  // console.log(plusOne(arr))
  // let arr2 = [2, 9];
  // console.log(plusOne(arr2))
  // let arr3 = [6,1,4,5,3,9,0,1,9,5,1,8,6,7,0,5,5,4,3];
  // console.log(plusOne(arr3))
})()