Open GleanCoder1116 opened 4 years ago
使用ES10新增API BigInt
const plusOne = (digits) => {
// 数值6145390195186705544超出Number基本类型的容纳范围,改用BigInt基本类型
let num = BigInt(digits.join(''));
// BigInt基本类型进行数学操作时,需要在数字字面量后加个n
let string = String(num + 1n);
let ary = string.split('');
return ary.map(str => Number(str));
};
首先用while遍历数组,只要数组从后往前有一个+1后不大于10,更改那位数组元素后,即可return digits,如果数组遍历完了还是没有return,那么就说明数组元素+1一直存在进位,则可以用js的splice添加首位元素并设值为1,最后修改新返回的数组的第二位为0,即可return digits
const plusOne = function(digits) {
let i = digits.length - 1
while(i>=0){
if(digits[i] + 1 < 10){
digits[i] = digits[i] + 1
return digits
}else{
digits[i] = 0
}
i--
}
digits.splice(0,0,1)
digits[1] = 0
return digits
};
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
示例1
JavaScript大家不容易关注的地方
其实小于16位的数组处理很简单;复杂的就是超过16位的大数;Bigint;因为js本身的问题,想加会出异常