Искать уникальный URL

Учитывая набор 1 миллион (очень большой) нет. URL. Найдите "первый" "уникальный" URL из списка.

Мой подход: создать хеш, используя идеальную функцию хеширования, которая может помочь. Но мой вопрос состоит в том, чтобы хэшировать большие данные невозможно. Тогда как я могу решить этот вопрос.

Есть ли способ сделать на месте? Пожалуйста помоги. Заранее спасибо.

1 ответ

Решение

Учитывая входной список ["c","a","b","a","c"]мой первый подход будет:

  1. Преобразуйте список URL-адресов в список кортежей, который связывает каждый элемент, который занимает свою позицию в списке. Теперь у вас есть [(0,"c"),(1,"a"),(2,"b"),(3,"a"),(4,"c")],
  2. Сортируйте список лексикографически по второму элементу кортежа (URL). Теперь у вас есть [(1,"a"),(3,"a"),(2,"b"),(0,"c"),(4,"c")],
  3. Группируйте последовательности последующих равных кортежей (кортеж равен, если второй элемент равен) в подсписки. Теперь у вас есть [[(1,"a"),(3,"a")],[(2,"b")],[(0,"c"),(4,"c")]],
  4. Фильтруйте список так, чтобы у вас были только списки длины 1. Теперь у вас есть [[(2,"b")]],
  5. Если полученный список пуст, в списке нет уникального URL. Если он не пустой, сортируйте список по первому элементу кортежа (позиции в строке). В этом случае вы получите тот же список обратно - [[(2,"b")]],
  6. возьмите первый элемент списка. Теперь у вас есть [(2,"b")],
  7. Кортеж (единственный) в этом списке сообщает вам первый уникальный URL и позицию в списке ввода: это URL b в положении 2 в списке ввода.
Другие вопросы по тегам