Удаление дупликатов из массива

Рейтинг: -1Ответов: 2Опубликовано: 05.02.2023

Если кратко, то решаю задачу на литкоде, но мой ответ не принимается, несмотря на кажущуюся его истинность.

Вот условие, если кому-то интересно, хотя на самом деле просто нужно удалить повторяющиеся элементы массива.

введите сюда описание изображения

Вот моё решение:

    var removeDuplicates = function(nums) {
    for (let i = 0; i < nums.length; i++){
        let a = nums[i];
        for (let j = 0; j < nums.length; j++){
            if(a == nums[j] && i != j){
                nums = nums.pop(nums[j])
                j--
            }
        }
    }
    return nums
};

И вот результат:

введите сюда описание изображения

Что я делаю не так?

Ответы

▲ 1

Вот пример решения на Python (Accepted). Обратите внимание, что возвращается количество уникальных элементов, и система сверяет обновленное содержимое аргумента nums.

class Solution:
    def removeDuplicates(self, nums: List[int]) -> int:
        k = 0
        for i in range(1, len(nums)):
            if nums[i] == nums[i-1]:
                k += 1
            elif k:
                nums[i-k] = nums[i]
        return(len(nums) - k) 
▲ 0

Вариант, как убрать дубликаты в массиве:

const input = [1,2,5,7,8,1,3,5,1,5,6,8,3,5,6,1,3,5,7];
const inputMin = [1,1,2];

/**
 * @param {number[]} arr
 * @return {number[]}
 */
const removeDuplicates = (arr) => {
  const fItem = [];
  while (arr.length) {
    const el = arr.splice(0, 1)[0];
    fItem.push(el);
    arr = arr.filter(e => e !== el)
  }
  return fItem;
}

console.log(removeDuplicates(input))
console.log(removeDuplicates(inputMin))