leetcode 初级算法-数组-加一

102 阅读1分钟

题目:

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

示例 1:

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

示例 2:

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

示例 3:

输入: digits = [0]
输出: [1]

示例 4:

输入: digits = [9]
输出: [1, 0]

示例 5:

输入: digits = [1, 2, 9, 3, 9]
输出: [1, 2, 9, 4, 0]

示例 6:

输入: digits = [9, 9, 9]
输出: [1, 0, 0, 0]

解答1:

var plusOne = function(digits) {
  const length = digits.length;
  // 倒着来
  for (let i = length - 1; i >= 0; i--) {
    if (digits[i] != 9) {
      // 不是9 就最后一个值加1就返出去
      digits[i]++
      return digits;
    } else {
      // 否则就是0,回到上一步倒数第二加1返出去
      digits[i] = 0;
    }
  }
  
  // 走到这就证明全是0,eg: [9, 9, 9] -> [0, 0, 0]
  // 那就再数组最前面推个1
  digits.unshift(1)
  return digits
};

提交结果:

截屏2022-05-13下午3.35.55.png

最后,去研究一下另外的解法,待续。。。