Питонические структуры данных и алгоритмы
Минимальные и понятные примеры реализации структур данных и алгоритмов в Python 3.
Содействие
Спасибо за ваш интерес к участию! Есть много способов внести свой вклад в этот проект. Начните здесь
Тесты
Используйте юниттест
Для запуска всех тестов запишите:
$ python3 -m unittest discover tests
Для запуска некоторых конкретных тестов вы можете сделать это следующим образом (например: сортировка):
$ python3 -m unittest tests.test_sort
Используйте pytest
Для запуска всех тестов запишите:
$ python3 -m pytest tests
Установить
Если вы хотите использовать алгоритмы API в своем коде, это так же просто, как:
$ pip3 install algorithms
Вы можете протестировать, создав файл Python: (Пример: используйте merge_sort
в sort
)
from algorithms . sort import merge_sort
if __name__ == "__main__" :
my_list = [ 1 , 8 , 3 , 5 , 6 ]
my_list = merge_sort ( my_list )
print ( my_list )
Удалить
Если вы хотите удалить алгоритмы, это так же просто, как:
$ pip3 uninstall -y algorithms
Список реализаций
- массивы
- delete_nth
- сгладить
- гараж
- Джозефус_проблема
- предел
- самый длинный_non_repeat
- max_ones_index
- merge_intervals
- отсутствующие_диапазоны
- плюс_один
- удалить_дубликаты
- вращать
- sum_ranges
- три_сумма
- балансовое значение
- топ_1
- две_сумма
- move_zeros
- n_sum
- жадный
- max_contigious_subsequence_sum
- автоматы
- отступать
- General_solution.md
- add_operators
- анаграмма
- array_sum_combinations
- комбинация_сумма
- фактор_комбинации
- генерировать_аббревиатуры
- генерировать_парентезис
- буквенная_комбинация
- palindrome_partitioning
- шаблон_матч
- переставлять
- permute_unique
- подмножества
- subsets_unique
- лучшие друзья
- maze_search
- самое короткое_дистанция_от_всех_зданий
- word_ladder
- кусочек
- add_bitwise_operator
- битовая_операция
- bytes_int_conversion
- count_flips_to_convert
- count_ones
- найти_разницу
- find_missing_number
- флип_бит_длинная_последовательность
- сила_двойки
- обратные_биты
- одиночный_номер
- одиночный_номер2
- одиночный_номер3
- подмножества
- пара_свопа
- has_alternative_bit
- вставить_бит
- удалить_бит
- двоичный_промежуток
- сжатие
- huffman_coding
- rle_compression
- Элиас
- ДФС
- все_факторы
- count_islands
- pacific_atlantic
- sudoku_solver
- стены_и_ворота
- распределение
- дп
- buy_sell_stock
- восхождение_по лестнице
- монета_изменение
- комбинация_сумма
- яйцо_дроп
- дом_грабитель
- int_divide
- job_scheduling
- рюкзак
- самый длинный_увеличение
- matrix_chain_order
- max_product_subarray
- max_subarray
- min_cost_path
- num_decodings
- регулярное выражение_соответствие
- стержень_cut
- word_break
- Фибоначчи
- Хосоя треугольник
- K-фактор_строки
- посадка_деревьев
- график
- check_bipartite
- сильно_подключен
- клон_граф
- Cycle_detection
- find_all_cliques
- найти_путь
- график
- Дейкстра
- markov_chain
- минимальное_spanning_tree
- выполнимость
- минимум_spanning_tree_prims
- Тарьян
- обход
- Maximum_flow_bfs
- Maximum_flow_dfs
- all_pairs_shortest_path
- Беллман_форд
- Подсчитайте подключенные компоненты
- куча
- merge_sorted_k_lists
- линия горизонта
- скользящий_окно_макс
- двоичная_куча
- k_closest_points
- связанный список
- add_two_numbers
- copy_random_pointer
- delete_node
- first_cycl_node
- is_cycle
- is_palindrome
- kth_to_last
- связанный список
- удалить_дубликаты
- обеспечить регресс
- Rotate_list
- swap_in_pairs
- is_sorted
- удалить_диапазон
- карта
- хеш-таблица
- отдельная_цепочка_хэштаблица
- самая длинная_общая_подпоследовательность
- самая длинная_палиндромная_подпоследовательность
- рандомизированный_набор
- valid_sudoku
- word_pattern
- is_isomorphic
- is_anagram
- математика
- base_conversion
- chinese_remainder_theorem
- комбинация
- cosine_similarity
- decimal_to_binary_ip
- diffie_hellman_key_exchange
- euler_totient
- расширенный_gcd
- факториал
- find_order
- find_primitive_root
- НОД/LCM
- генерировать_стробограммтик
- градина
- is_strobogrammatic
- krishnamurthy_number
- магический_номер
- модульная_экспоненциальная
- модульный_инверс
- next_bigger
- next_perfect_square
- n-ная_цифра
- num_perfect_squares
- полиномиальный
- власть
- prime_check
- primes_sieve_of_eratosthenes
- Пифагор
- Рабин Миллер
- recursive_binomial_coefficient
- RSA
- sqrt_precision_factor
- суммирование_цифр
- симметрия_группа_цикл_индекс
- матрица
- sudoku_validator
- бомба_враг
- copy_transform
- count_paths
- матрица_возведения в степень
- матрица_инверсия
- матрица_умножение
- вращать_изображение
- search_in_sorted_matrix
- sparse_dot_vector
- разреженный_муль
- спираль_обхода
- crout_matrix_decomposition
- cholesky_matrix_decomposition
- sum_sub_squares
- sort_matrix_diagonally
- очереди
- max_sliding_window
- скользящая_средняя
- очередь
- реконструировать_очередь
- зигзагитератор
- поиск
- двоичный_поиск
- первое_вхождение
- последнее_вхождение
- линейный_поиск
- search_insert
- две_сумма
- диапазон_поиска
- find_min_rotate
- search_rotate
- jump_search
- next_greatest_letter
- интерполяция_поиск
- набор
- рандомизированный_набор
- set_covering
- find_keyboard_row
- сортировать
- bitonic_sort
- bogo_sort
- пузырь_сортировка
- ведро_сортировка
- Cocktail_shaker_sort
- расческа_сортировка
- counting_sort
- цикл_сортировка
- обмен_сортировка
- gnome_sort
- heap_sort
- вставка_сортировка
- конференц-залы
- слияние_сортировка
- pancake_sort
- pigeonhole_sort
- быстрая_сортировка
- radix_sort
- выбор_сортировка
- Shell_sort
- sort_colors
- stooge_sort
- верхняя_сортировка
- Wiggle_sort
- куча
- самый длинный_abs_path
- упрощенный_путь
- куча
- valid_parenthesis
- заикаться
- переключатель_пары
- is_consecutive
- удалить_мин
- is_sorted
- потоковая передача
- 1-разреженное восстановление
- Мисра-грис
- струны
- шипение
- delete_reoccurring
- Strip_url_params
- validate_coordinates
- домен_экстрактор
- merge_string_checker
- add_binary
- во все тяжкие
- декодирующая_строка
- кодировать_декодировать
- group_anagrams
- int_to_roman
- is_palindrome
- номер_лицензии
- make_sentence
- Multiple_strings
- one_edit_distance
- Рабин_Карп
- обратная_строка
- обратная_гласная
- обратные_слова
- roman_to_int
- слово_квадраты
- unique_morse
- судья_круг
- сильный_пароль
- caesar_cipher
- check_pangram
- содержит_строку
- count_binary_substring
- повтор_строка
- мин_дистанция
- самый длинный_общий_префикс
- вращать
- first_unique_char
- повтор_подстрока
- самая длинная_палиндромная_подстрока
- knuth_morris_pratt
- панаграмма
- дерево
- лучше всего
- array_to_bst
- bst_closest_value
- BSTИтератор
- delete_node
- is_bst
- kth_smallest
- самый низкий_общий_предок
- предшественник
- сериализация_десериализовать
- преемник
- unique_bst
- глубина_сумма
- count_left_node
- num_empty
- высота
- фенвик_дерево
- красное_черное_дерево
- сегмент_дерево
- сегмент_дерево
- iterative_segment_tree
- обход
- чтобы
- level_order
- почтовый заказ
- Предварительный заказ
- зигзаг
- попробовать
- add_and_search
- попробовать
- б_дерево
- двоичные_деревья_пути
- bin_tree_to_list
- Construct_tree_preorder_postorder
- самый глубокий_левый
- инвертировать_дерево
- is_balanced
- is_subtree
- is_symmetric
- самый длинный_последовательный
- самый низкий_общий_предок
- максимальная_высота
- max_path_sum
- минимальная_высота
- сумма_пути
- путь_сумма2
- довольно_принт
- то же_дерево
- дерево
- Юникс
- путь
- join_with_slash
- полный_путь
- расколоть
- упрощенный_путь
- союзнайти
Авторы
Спасибо всем участникам, которые помогли в создании репо.