每日一道算法题 数组 66 加一

307 阅读1分钟
  • 给定一个由整数组成的非空数组表示的非负整数,在该数的基础上加一。最高位数字放在数组的首位,数组中每个元素只存储单个数字。

    • 你可以假设除了整数0之外,这个整数不会以0开头。 示例1
    输入:digits = [1,2,3]
    输出:[1,2,4]
    解释:输入数组表示数字 123。
    

    示例2

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

    提示:

    • 1 <= digits.length <= 100
    • 0 <= digits[i] <= 9 解题
     // 从后往前遍历数组,如果没有9则加1返回数组,
    // 有9则变成0, 以此类推继续往前遍历
    // 如果首位仍是9,数组长度加1,所有值改成0,首位改成1, 返回数组
    const plusOne = (digits) => {
        for (let i = digits.length; i >= 0; i--) {
        	// 没有9则加1返回数组
        if (digits[i] < 9) {
        	let j = digits[i] + 1;
        	digits[i] = j;
        	return digits;
        } else if(digits[i] === 9 && i > 0) { // 有9则变成0,以此类推继续往前遍历
          digits[i] = 0;
        } else if (digits[a] === 9 && a === 0) { // 如果首位仍是9
          digits.length += 1;
          // fill() 方法用于将一个固定值替换数组的元素。array.fill(value, start, end)
          digits.fill(0);
          digits[0] = 1;
          return digits;
        }
    
      }
    }
    console.log(plusOne([1, 2, 3]));