首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >加上一个- Leet代码问题(容易)-所有测试用例都通过了,除了javascript中的一个。

加上一个- Leet代码问题(容易)-所有测试用例都通过了,除了javascript中的一个。
EN

Stack Overflow用户
提问于 2021-11-11 15:56:40
回答 2查看 423关注 0票数 0

我想我的解决方案已经通过了所有的测试用例,但都失败了。

加一个leetcode问题

问题:

您将得到一个表示为整数数组数字的大整数,其中每个数字都是整数的第一个数字。从最重要的数字到最不重要的数字按左向右排序。大整数不包含任何前导0。 将大整数增加1,并返回结果的数字数组。

示例1:

代码语言:javascript
复制
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:

代码语言:javascript
复制
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].

制约因素:

  • 1 <= digits.length <= 100
  • 0 <=数字<= 9
  • 数字不包含任何前导0。

我的解决方案:

代码语言:javascript
复制
var plusOne = function(digits) {
   let arrToStr=digits.join('');
   arrToStr++;
   let strToArr = arrToStr.toString().split('').map((x)=>parseInt(x));
   
   
   return strToArr;
};

此测试用例失败:

代码语言:javascript
复制
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不利于竞争性编程,因为它有一些缺点。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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 (隐藏,这样我就不会搅乱你)

票数 2
EN

Stack Overflow用户

发布于 2022-09-11 12:17:39

这是我的解决方案,尽管它可能不太适合它的性能:

代码语言:javascript
复制
function plusOne(digits: number[]): number[] {
let digitsCombined = BigInt(digits.join(''));
return (++digitsCombined).toString().split('').map(Number);
};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69931272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档