Comments 10
Массивы (они же списки)
В классической дисциплине "алгоритмы и структуры данных" списки это все-же не массивы, под списками обычно понимаются двусвязные или односвязные списки, когда каждый элемент содержит указатели на предыдущий и/или следующий, а сами элементы располагаются не в непрерывной памяти, а в произвольном порядке.
Деревья - тоже важная структра данных.
Дополню статью хорошим обзором из 14 подходов, которые позволяют решить 99% алгоритмических задач с известных тренажёров
Массив(списки в python) — это структура данных, представляющая собой коллекцию элементов одного типа
Почему это одного типа? Я что, не могу первым элементом добавить строку, а вторым число?
А почему хаб - Go, если все примеры на python?
Целая мапа на панграмму это дофига. Там на метадате в ее реализации больше потратите, чем получите. Делаете байт/булеан массив в 26 элементов (для строчной латиницы), где нулевой это 61h ascii и закидываете туда 1/false по номеру символа. Результат будет асимптотически тот же, но по памяти неасимптотически, но выгоднее В случае например любого символа юникода - уже хорошо иметь HashSet, изначально пустой, чтобы в него добавить и потом по юникоду пробежаться без особых потерь, на предмет отсутствия. В целом его наличие в языке уже довольно универсальное решение этой задачи, частный случай с латиницей в ascii это его "эмуляция", но более выгодная, за счет того что любая имплементация множества дает либо пересоздание массива - O(N) модификацию, либо O(N) поиск в линкед варианте . В любом случае мапа тут против множества избыточна, она так же себе ведет как множество, но тяжелее, хоть и на константу.
Топовые подходы к решению алгоритмических задач