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