You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么我的Typescript解法在Codesignal仅通过9/10个测试用例?

问题原因分析

核心错误:数组排序逻辑不符合预期

TypeScript 中 Array.sort() 方法默认采用Unicode 字典序对元素进行排序,而非你预期的数字大小排序。比如对于数字数组 [10, 2],默认排序结果为 [10, 2](因为字符串'10'的 Unicode 编码小于'2'),这会导致你后续取到的数组最小值、最大值完全错误,所有计算逻辑都失效。

两个版本代码通过率不同的原因

  • 第一个版本用filter + indexOf的逻辑,在排序正确的前提下可以得到正确结果,但因为排序错误,仅部分测试用例刚好符合字典序排序的结果,所以通过了9个用例。
  • 第二个版本full.length - sorted.length的逻辑本身是正确的(无重复元素的前提下,连续序列总长度减去已有元素长度就是需要补充的数量),但排序错误导致full数组的上下界偏差更大,所以通过率更低。
修复方案

1. 修复排序逻辑

给sort方法传入数字升序比较函数即可解决问题:

let sorted: number[] = statues.sort((a, b) => a - b);

修复排序逻辑后你的两个版本代码都可以正常通过所有测试用例。

2. 更高效的优化写法

不需要排序、也不需要生成额外数组,直接计算即可得到结果:

function makeArrayConsecutive2(statues: number[]): number {
    const min = Math.min(...statues);
    const max = Math.max(...statues);
    return max - min + 1 - statues.length;
}

内容的提问来源于stack exchange,提问作者El Niño

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 10:45:02