【发布时间】:2020-07-13 20:21:44
【问题描述】:
目前正在处理具有此要求的功能:
给定一个数组 nums 和一个值 val,就地删除该值的所有实例并返回该数组。 不要为另一个数组分配额外的空间,您必须通过使用 O(1) 额外内存就地修改输入数组来做到这一点。可以更改元素的顺序。
我遇到了一个奇怪的问题,其中函数同时返回两个不同的值,我对为什么会发生这种事情感到困惑。代码如下:
var removeElement = function(nums, val) {
let left = 0;
let right = nums.length - 1;
while(left < right || left === nums.length - 1) {
if(nums[left] !== val && nums[right] !== val) {
left++;
} else if(nums[left] === val && nums[right] === val) {
right--;
nums.length--;
} else {
if(nums[right] === val) {
left++;
right--;
nums.length--;
} else if(nums[left] === val){
var tempLeft = nums[left];
nums[left] = nums[right];
nums[right] = tempLeft;
nums.length--;
right--;
left++;
}
}
}
return nums;
};
console.log(removeElement([0,1,2,2,3,0,4,2], 2));
预期输出
[0,1,3,0,4] // in no particular order
电流输出
[0,1,4,0,3]
[0,1,6,5]
【问题讨论】:
-
它明显返回
[0, 1, 4, 0, 3]- 肯定有其他代码产生[0,1,6,5] -
运行该函数只返回一个数组。你可以运行上面的sn-p。
标签: javascript arrays