Почему эта функция javascript возвращает два разных значения? - PullRequest
0 голосов
/ 13 июля 2020

В настоящее время работает над функцией со следующими требованиями:

Учитывая массив 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]

Ответы [ 2 ]

0 голосов
/ 14 июля 2020
0 голосов
/ 13 июля 2020

Вы можете проверить прямо здесь, и я проверял на разных игровых площадках - он возвращает только [0,1,4,0,3].

Пожалуйста, предоставьте более подробную информацию о том, как вы его запускаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...