В настоящее время работает над функцией со следующими требованиями:
Учитывая массив 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]