题目描述
- 给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。
- 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
- 你可以假设除了整数 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]
解题方法
解题思路
- 首先需要知道当前位是否需要进位以及数字长度是否会改变;我们首先将数字转为数组形式,便于数据处理;数组末位数字加1,然后开始倒序遍历数组;判断当前位数字是否需要进位,做出对应处理;遍历数组完毕,若还存在进位,则数组首位添加1即可。
var plusOne = function(digits) { let carry=false; digits[digits.length-1]++; for(let i=digits.length-1;i>=0;i--){ if(carry){ digits[i]++; } carry=digits[i]>9; digits[i]%=10; } if(carry){ digits.unshift(1); } return digits; };