https://leetcode-cn.com/problems/plus-one/
点击查看【bilibili】

题目

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

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

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

示例

  1. 输入:digits = [1,2,3]
  2. 输出:[1,2,4]
  3. 解释:输入数组表示数字 123
  4. 输入:digits = [4,3,2,1]
  5. 输出:[4,3,2,2]
  6. 解释:输入数组表示数字 4321
  7. 输入:digits = [0]
  8. 输出:[1]

解答

  1. 从最后一位开始循环
  2. 如果当前为不是9,直接加1,然后返回结果
  3. 如果当前为是9,把当前位变成0,继续循环,重复第2步
  4. 考虑全是9的情况 [9,9],如果都是9那么所有位数都会变成0,也不会返回结果
  5. 在最后拼接一个1,返回结果即可

    答案

    var plusOne = function(digits) {
    // 倒序循环
    for(let i=digits.length-1;i>=0;i--) {
     // 如果当前位不是9,加1,返回结果
     if(digits[i] !== 9) {
       digits[i]++;
       return digits;
     // 如果当前位是9,当前位变成0,循环继续
     }else {
       digits[i] = 0;
     }
    }
    console.log(digits)
    // 处理 全是9的情况,[9,9,9]
    const result = [1, ...digits];
    
    return result
    };