第三方网站,济南教育加盟网站建设,优秀定制网站建设方案,教育集团网站建设一、题目描述 给定一个由 整数 组成的 非空 数组所表示的非负整数#xff0c;在该数的基础上加一。最高位数字存放在数组的首位#xff0c; 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外#xff0c;这个整数不会以零开头。 示例 1#xff1a; 输入#xff1a…一、题目描述 给定一个由 整数 组成的 非空 数组所表示的非负整数在该数的基础上加一。最高位数字存放在数组的首位 数组中每个元素只存储单个数字。你可以假设除了整数 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] 二、思路
思路 判断每种可能出现的情况
当末位是 0-8 时末位加1即可
当末位是9加1就是10了要进位所以末位变为0进位加1
当进位也为9即进位变为0 进位的进位也要加1以此类推
当首位也是9则需要在数组首位unshift一个1 所以要从末端遍历整个数组给以下情况的元素加一并返回结果 元素数值为0~8 需要进位的、且满足结果不产生进位元素 末位不需要进位且满足结果不产生进位的元素
给以下情况的元素赋值为0
元素数值为9需要进位
上述条件不满足则代表原来数组元素都是9满足第二种情况被完全赋值为0此时首位要进位
则在数组的首位插入1返回结果
三、代码展示
var plusOne function(digits) {// 第一、二、三种情况for(let i digits.length - 1; i 0; i--) {if(digits[i] ! 9) { // 当该位置满足条件就加1digits[i] ;return digits;} else {digits[i] 0 // 不满足就变为0进位有加1的需要重新进入遍历}}// 当不满足前击中情况此时digits已全部遍历为0第四种情况let result [1, ...digits];return result;
};