我想我的解决方案已经通过了所有的测试用例,但都失败了。
问题:
您将得到一个表示为整数数组数字的大整数,其中每个数字都是整数的第一个数字。从最重要的数字到最不重要的数字按左向右排序。大整数不包含任何前导0。 将大整数增加1,并返回结果的数字数组。
示例1:
Input: digits = [1,2,3]
Output: [1,2,4]
Explanation: The array represents the integer 123.
Incrementing by one gives 123 + 1 = 124.
Thus, the result should be [1,2,4].示例2:
Input: digits = [9]
Output: [1,0]
Explanation: The array represents the integer 9.
Incrementing by one gives 9 + 1 = 10.
Thus, the result should be [1,0].制约因素:
我的解决方案:
var plusOne = function(digits) {
let arrToStr=digits.join('');
arrToStr++;
let strToArr = arrToStr.toString().split('').map((x)=>parseInt(x));
return strToArr;
};此测试用例失败:
Input:
[6,1,4,5,3,9,0,1,9,5,1,8,6,7,0,5,5,4,3]
Output:
[6,1,4,5,3,9,0,1,9,5,1,8,6,7,0,5,0,0,0]
Expected:
[6,1,4,5,3,9,0,1,9,5,1,8,6,7,0,5,5,4,4]我做错什么了吗?还是因为javascript?正如我所读到的,javascript不利于竞争性编程,因为它有一些缺点。
发布于 2021-11-11 16:02:18
JavaScript中的整数只能表示高达9,007,199,254,740,991 (https://stackoverflow.com/a/49218637/7588455)
6,145,390,195,186,705,543比这更大。
我建议使用BigInt作为替代方案。
可能的解决方案如下所示:
https://pastebin.com/NRHNYJT9 (隐藏,这样我就不会搅乱你)
发布于 2022-09-11 12:17:39
这是我的解决方案,尽管它可能不太适合它的性能:
function plusOne(digits: number[]): number[] {
let digitsCombined = BigInt(digits.join(''));
return (++digitsCombined).toString().split('').map(Number);
};https://stackoverflow.com/questions/69931272
复制相似问题