【发布时间】:2021-08-03 23:41:42
【问题描述】:
我的 while 循环似乎导致了一个无限循环,但是当我单步执行它时,循环似乎适当地结束了。我没看到什么?在我看来,我的 else 应该向左迭代最终等于 2,然后 left 不再小于 right,它应该只返回 nums。
function removeDuplicates(nums) {
let left = 0;
let right = nums.length - 1;
while (left < right) {
if (nums[left] !== nums[left + 1]) {
nums.splice(nums[left], 1)
nums.push("_")
} else {
left++
}
}
return nums;
}
removeDuplicates([1,1,2])
我希望最终结果返回 [1,2,"_"]
【问题讨论】:
-
即使它没有以无限循环结束,这种方法也不会删除重复项,只会删除立即重复。
-
nums[left]不能作为nums.splice()的参数:它是一个值,而不是一个位置。 -
@MisterJojo 该值返回一个数字。数字可以用作位置。
-
尝试
removeDuplicates([10,10,20])-> 没有10索引元素 -
啊,我明白你的意思了。我让它在我的浏览器中运行,但在 LeetCode 编辑器中失败了。
标签: javascript loops while-loop