и вернуть из списка пару с минимальным первым числом, удалить и вернуть из списка пару с минимальным вторым числом. Если я создам две копии отсортированного списка по первому и второму числу соответственно, и буду pop'ать значения из соответствующего, мне придется каждый раз бинпоиском искать эту пару во втором списке, и удалять еще и оттуда. Как это реализовать? Пары могут повторяться.
Аоаоа. Я придумал. Сделать enumerate(), отсортировать по первому и второму значению в обеих копиях, и сделать словари, и получать доступ по ключу.
Я понял задачу, не совсем понятно что ты пытаешься оптимизировать, так как это не имеет особого смысла
У меня очень-очень много таких пар. Это спортпрог. И для каждой такой пары в отсортированном первом списке бинпоиском искать собрата во втором я не могу, тем более искать значения каждый раз за log(n). Операции удаления необходимо производить, пока пары не закончатся
ну сделай ещё словарик пара->позиции
Черт, я же в словаре не узнаю какой элемент первый..
Я не совсем понял. Как мне это поможет? Я же буду удалять элементы, и позиции сместятся.. Почему в питоне нет возможности работы с указателями
а как тебе тут указатели помогут?
Ну я по указателю удалял бы пару из памяти. Подобно как a = list(1,2,3);b=a;a.pop()
из памяти удалять это прикольно, а что делать если этот указатель уже где-то ипользовался?
Так и что? У тебя добавить 1 пара и будешь сидеть снова все сортировать? Какое соотношение добавления/удаления элементов?
Добавлений не будет. Только удаления. Пока не закончится список
Обсуждают сегодня