我正在嘗試解決以下 Leetcode 問題:
給定一個表示為整數陣列digits 的大整數,其中每個digits[i] 是整數的第i 個數字。數字按從左到右的順序從最高有效到最低有效排序。大整數不包含任何前導 0。
將大整數加一并回傳結果數字陣列。
示例 1:
輸入:
digits = [1,2,3]輸出:[1,2,4]解釋: 陣列代表整數123。加一給出123 1 = 124。因此,結果應該是[1,2,4]。
這是我的代碼:
var plusOne = function(digits) {
let newDigit = digits.join('')
if (newDigit.length > 15) {
let digitLength = newDigit.length
let secondHalf = newDigit.slice(digitLength - 15, digitLength)
secondHalf = parseInt(secondHalf) 1
secondHalf = Array.from(String(secondHalf), Number)
digits.splice(digitLength - 15, 15)
return digits.concat(secondHalf)
}
let Digit = parseInt(newDigit) 1
const answer = Array.from(String(Digit), Number)
return answer
};
適用于許多資料集。在以下集合上得到以下錯誤。為什么 :(

uj5u.com熱心網友回復:
當您這樣做時parseInt(secondHalf),您實際上是在洗掉該字串中的任何前導零,因此這些零不會包含在最終陣列中。輸入數字保證沒有任何前導零,但這并不意味著如果你在中間分割字串,就不會有任何前導零。
此外,即使解決了這個問題,超過 30 個字符的輸入陣列又如何呢?
考慮改用 BigInt,它會容??易得多。
const plusOne = function(digits) {
const bigInt = BigInt(digits.join('')) 1n;
return [...String(bigInt)].map(Number);
}
console.log(plusOne(
'590840235570031372488506112'.split('').map(Number)
));
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/487208.html
標籤:javascript 数组 级联
上一篇:如何讓前處理器宏在編譯前評估代碼
下一篇:導致無法讀取未定義的屬性
