Трюки Python. Поиск и подсчет уникальных значений
Java 1380. Класс LinkedList.
1380. Класс LinkedList. Класс LinkedList в Java представляет собой реализацию двусвязного списка. Он предоставляет методы для добавления, удаления и доступа к элементам списка. Вот некоторая информация о классе LinkedList: LinkedList является обобщенным классом, что означает, что вы можете создавать экземпляры LinkedList с указанием типа элементов, которые он будет содержать. Например, вы можете создать LinkedList для хранения целых чисел или LinkedList для хранения строк. Класс LinkedList реализует интерфейс List, поэтому он обладает всеми основными методами, определенными в этом интерфейсе...
Как объединить два связанных списка на Python? Это первая задача на литкоде, которую я так и не смог решить. Проблема в том, что в питоне как бы нет такой структуры. Она реализована в библиотеке collections как deque (очередь), и если ей не пользоваться, то придется сначала оформить соответвующий объект прямо в своем коде. Поначалу я ковырялся в двух данных списках, которые в условии выглядели как обычный list, а на поверку оказались объектами класса LinkedList, заранее реализованного в форме для ответа. Это означало, что работать сними как со списками, при помощи методов списков и прочих операторов, невозможно. Вообще у класса LinkedList в задаче не было ничего кроме двух атрибутов - value и next. Как и положено теории связанных списков, первый хранил значение, а второй должен был служить ссылкой на очередное значение. Тут-то я и застрял. Как должна выглядеть ссылка на очередное значение, было до отчаяния непонятно. Просветление пришло. В качестве аргумента next объект класса LinkedList принимал также объект класса LinkedList! Казалось, решение близко. Однако, как я ни бился, у меня выходили только монструозные нерабочие нечитаемые варианты. В итоге, я решил сдаться и заглянуть в решения. Смысл самого изящного и быстрого был в следующем. Автор создавал две вспомогательных ссылки cur и dummy на один объект класса LinkedList. Затем он сравнивал атрибуты val двух данных списков, и в случае если первый меньше второго, ставил ссылку cur на объект list1, а также переставлял ссылку list1 на атрибут next того же объекта list1, т.е. list1 = list1.next. В противном случае проделывалось то же самое, только с объектом list2. Несмотря на то, что я так и не отправил на проверку никакого своего решения и фактически его так и не нашел, в муках поиска ответа я узнал много нового и полезного о связанных списках, логике работы пайтон с ними, о возможности реализации собственных структур данных.