原文:66. 加一(力扣 面试题) - 每天一个JavaScript小知识@Js中文网 · 码农进阶题库

原文地址:https://www.javascriptc.com/interview-tips/zh_cn/leetcode/leetcode-javascript-solution-066/

题目:

难度:Easy

相关话题:数组

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

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

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

示例1:

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

示例2:

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

思路:

字符串加法的简单版,处理好进位。

/**
 * @来源: Javascript中文网 - 前端进阶资源教程 https://www.javascriptc.com/
 * @介绍:一个致力于帮助开发者用代码改变世界为使命的平台,每天都可以在这里找到技术世界的头条内容
 * @param {number[]} digits
 * @return {number[]}
 */
var plusOne = function(digits) {
  let carry=1,id=digits.length-1
  while(carry>0 && id>=0){
    digits[id]+=carry
    carry=Math.floor(digits[id]/10)
    digits[id] %= 10
    id--
  }
  if(carry>0)digits.unshift(carry)
  return digits

  // let i=digits.length-1
  // digits[i]+=1
  // while(digits[i]===10){
  //   digits[i]=0
  //   if(i===0)digits.unshift(0)
  //   else i--
  //   digits[i]+=1
  // }
  // return digits
};

扩展阅读: