LeetCode有序数组去重题:Javascript中return与console.log结果不一致
问题根源
- 你做的是LeetCode第26题「删除有序数组中的重复项」,这道题的判题规则要求原地修改输入的
nums数组,不能新建额外数组存储结果,同时要求返回值是去重后数组的长度(数字类型)。 - 你现在的代码逻辑是自行创建了
newNums数组存储去重结果,并且直接返回这个数组,既没有修改原输入的nums,返回值类型也和题目要求的数字不匹配,所以console.log能输出你预期的去重数组,但LeetCode判题系统读不到正确的结果,才会判定返回错误。 - 另外你代码里的空数组判断逻辑是冗余的,就算
nums长度为0,后续的循环也不会执行,newNums本来就是空数组,不需要额外赋值。
符合题目要求的实现
/** * @param {number[]} nums * @return {number} */ var removeDuplicates = function (nums) { // 空数组直接返回0 if (nums.length === 0) return 0 // 慢指针 记录去重后元素的存储位置 let slow = 0 for (let fast = 1; fast < nums.length; fast++) { // 遇到不重复的元素 就移动慢指针 赋值 if (nums[fast] !== nums[slow]) { slow++ nums[slow] = nums[fast] } } // 慢指针索引+1就是去重后数组的长度 return slow + 1 };
内容的提问来源于stack exchange,提问作者Hamzah
相关产品推荐
相关产品推荐

