今天在leetcode上面作题目,有一道数组形式的整数加法运算,原本觉得还蛮简单的,想着直接将数组先转化为String类型,而后直接相加就好,数组
代码以下: code
var addToArrayForm = function(A, K) {
let result = A.toString().replace(/,/g,'')
let c = String(+result+K)
let arr = [...c]
return arr
};orm
结果验证没有经过:addToArrayForm ([1,2,6,3,0,7,1,7,1,9,7,5,6,6,4,4,0,0,6,3] ,516);leetcode
开始怎么也没有找到问题在哪里,还以为本身的逻辑没毛病,后来仔细检查才发现原来Number类型有一个最大范围和最小范围,能够使用性Number.MAX_VALUE , Number.MIN_VALUE属性进行查看,字符串
是正负2的53次方,超出最大范围后精确性就会下降,此时若是须要运算的话能够考虑使用字符串的方式进行,通过后期思考后,it
修改过的代码以下:io
var addToArrayForm = function(A, K) {
var ik = String(K).split('');
var maxLength = Math.max(A.length,ik.length);
var mow = new Array(maxLength)
for(let i =1;i<maxLength+1;i++) {
let r1 = +A[A.length-i]||0,r2=+ik[ik.length-i]||0
let result = r1+r2+(mow[mow.length-i]||0);
mow[mow.length-i] = result
if (mow[mow.length-i] >= 10){
mow[mow.length-i] = result-10
if(mow.length-i == 0 ){
mow.unshift(1)
}else {
mow[mow.length-i-1] = (mow[mow.length-i-1] || 0)+1
}
}
}
return mow
};function