Рабочая тетрадь, чтобы собрать вместе учебные упражнения (не все) и просто полезные куски кода.
Большая часть из них скопирована полностью или частично со скриншотов без возможности сослаться на конкретных пользователей - авторов оригиналов. Или просто скопирована и сохранена на память с многочисленными благодарностями к авторам.
Некоторые упражнения с LeetСode могут не запуститься на сайте, так как после submission были адаптированы под формат и запуск, как в основном репозитории Package lee_algorithm - алгоритм Ли для поиска в ширину. Задачи:
- ArrayTasks: решение нескольких задач: 1) перемешивание массива, 2) переставление элементов в обратном порядке, 3) поиск индекса элемента, отличающегося от предыдущего на заданную величину, 4) подсчет таких пар индексов в двух массивах, элементы под которыми дают при сложении заданную величину.
- BinarySearch: алгоритм бинарного поиска разные вариации
- BinaryTree: добавление элемента и поиск в бинарном дереве (без балансировки)
- BitShift: показать, как действуют операции побитового сдвига (из Шильдта Java: A Beginner`s Guide)
- Eratosthene: решето Эратосфена
- Fraction: программа для арифметических операций (здесь только сложение) над рациональными числами. Входные числа передаются в форме строки "числитель/знаменатель"
- GCD: поиск наибольшего общего делителя (Greatest Common Divisor) по алгоритму Эвклида
- HanoiTower: программа, показывающая последовательность действий для игры “Ханойская башня”
- HeapSort: пирамидальная сортировка
- Knights: Шахматную доску размером NxN обойти конём так, чтобы фигура в каждой клетке была строго один раз. Пример для доски 5х5 решение может выглядеть так.
| 25 | 14 | 3 | 8 | 19 |
|---|---|---|---|---|
| 4 | 9 | 18 | 13 | 2 |
| 15 | 24 | 1 | 20 | 7 |
| 10 | 5 | 22 | 17 | 12 |
| 23 | 16 | 11 | 6 | 21 |
- LCM: поиск наименьшего общего кратного (Least common divisor)
- MathExpr: Задано уравнение вида q + w = e, q, w, e >= 0. Некоторые цифры могут быть заменены знаком вопроса, например 2? + ?5 = 69. Требуется восстановить выражение до верного равенства. Предложить хотя бы одно решение или сообщить, что его нет.
- MergeSort: сортировка слиянием
- MergeStrings: решение задачи по ссылке https://leetcode.com/problems/merge-strings-alternately/
- MinStack: решение задачи по ссылке https://leetcode.com/problems/min-stack/
- MountainArray: решение задачи по ссылке https://leetcode.com/problems/valid-mountain-array/
- MyQueue: решение задачи по ссылке https://leetcode.com/problems/implement-queue-using-stacks/
- NumberSystem: Вычислительная компания XYZ закупила новые экспериментальные компьютеры, но её сотрудники не знают, в какой системе счисления новые компьютеры выдают результаты их вычислений. Помогите им определить их результаты в традиционной десятичной системе, если известно, что последовательность цифр N, которую выдает экспериментальный компьютер, записана в минимально возможной для этого системе счисления. В единственной строке записано исходное число N: 1 ≤ N ≤ 1000000
- NumsPermutation: сгенерировать все комбинации заданной длины, состоящие из чисел от 1 до заданного целочисленного параметра.
- PasswordGenerator: сгенерировать N паролей определенной длины и записать в текстовый файл с хэш-кодом или без него. Путь к файлу, количество паролей, длина одного пароля передаются в аргументах.
- PolishNotation: решение задачи по ссылке https://leetcode.com/problems/evaluate-reverse-polish-notation/
- Power: возведение целого числа в степень через побитовый сдвиг
- PrimeDivisors: поиск простых делителей числа
- Queens: На шахматной доске расставить 8 ферзей так, чтобы они не били друг друга.
- RedBlackTree: красно-черное левостороннее дерево
- RLE: cжатие строки через run-length-encoding. Пример: вход ааааbbbcd, результат - а4b3cd2.
- SimplifyPath: решение задачи по ссылке https://leetcode.com/problems/simplify-path/
- Sort: Сортировка пузырьком, выбором, вставками, быстрая
- StringPalindrome: Напишите метод, который принимает на вход строку и определяет, является ли она палиндромом.
- Tree: базовая реализация дерева как структуры данных
- TreeFactorial: вычисление факториала за O(n/2) операций
- Triangle: Даны три числа. Могут ли они быть сторонами треугольника?
- TwoCommands: На вход некоторому исполнителю подаётся два числа (a, b). У исполнителя есть две команды
- команда 1 (к1): увеличить в с раза, а умножается на c
- команда 2 (к2): увеличить на d ( +2 ), к a прибавляется d написать программу, которая выдаёт набор команд, позволяющий число a превратить в число b или сообщить, что это невозможно Пример 1: а = 1, b = 7, c = 2, d = 1 ответ: к1, к1, к1, к1, к1, к1 или к1, к2, к1, к1, к1 или к1, к1, к2, к1. Пример 2: а = 11, b = 7, c = 2, d = 1 ответ: нет решения. *Подумать над тем, как сделать минимальное количество команд
- TwoWayList: Реализовать двусвязный список + методы односвязного