前言
想着好久没去力扣刷题了,刚好手上的需求也差不多了,就去看了看。看到一个难度级别为困难的题,看到这个题想着直接使用JS现成的方法,先concat
再sort
。再取中间值不就实现了吗。是不是你们也这么想,哈哈哈。
就是上面的思路,果然很快,运行也通过了例子,然后提交,内心想(小菜一碟,轻松写完)。没想到却报错了吗,打脸太快。太自信也不行哇,来看看报上面错,竟然是sort方法出错了。
解析:
JavaScript 的 sort()
方法默认情况下是按照 Unicode 代码点进行排序的。对于数字,如果数组包含负数,直接使用 sort()
可能不会按照数值的正常顺序进行排序。就是上面的报错了,没错就是它。
示例:
let numbers = [10, 5, 7, 2, -1, -6];
numbers.sort();
console.log(numbers);
// 输出: [-1, -6, 10, 2, 5, 7]
在这个例子中,sort()
方法将数组元素转换为字符串并按照 Unicode 代码点进行排序,导致了 -1
排在 -6
前面。
为了正确排序包含负数的数组,应该使用自定义的比较函数,如下所示:
let numbers = [10, 5, 7, 2, -1, -6];
numbers.sort(