Download the PHP package evgeny87/leetcode-task without Composer
On this page you can find all versions of the php package evgeny87/leetcode-task. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Table of contents
Download evgeny87/leetcode-task
More information about evgeny87/leetcode-task
Files in evgeny87/leetcode-task
Download evgeny87/leetcode-task
More information about evgeny87/leetcode-task
Files in evgeny87/leetcode-task
Vendor evgeny87
Package leetcode-task
Short Description High-performance LeetCode solutions following evgeny87 Architecture Standards
License MIT
Package leetcode-task
Short Description High-performance LeetCode solutions following evgeny87 Architecture Standards
License MIT
Please rate this library. Is it a good library?
Informations about the package leetcode-task
Решение задачи LeetCode: Merge Two Sorted Lists
Обзор задачи
Необходимо объединить два отсортированных связанных списка в один. Новый список должен быть составлен путем связывания узлов двух исходных списков.
Установка
Пакет доступен на Packagist и устанавливается через Composer:
Архитектурные принципы
При реализации были соблюдены следующие стандарты:
- Immutability: Сервис объявлен как
final readonly(стандарт PHP 8.4+). - DI & Clean Code: Строгое соблюдение PSR-12, использование Constructor Injection и отказ от статических методов.
- Алгоритмические "Три кита":
- Использование указателей для навигации.
- Чистые условные выражения без оператора "!".
- Цикл
whileдля итерации по связанным спискам.
Структура проекта
Обоснование сложности алгоритмов
-
Вариант In-Place (Алгоритмический)
- Сложность по времени (T): O(n + m), где n и m — количество узлов в списках. Мы совершаем один линейный проход по элементам (слайды 10, 43).
- Сложность по памяти (M): O(1). Алгоритм не выделяет память под новые элементы, работая исключительно с перестановкой указателей существующих объектов в памяти (splicing).
- Вариант Immutable (Архитектурный)
- Сложность по времени (T): O(n + m). Аналогичный линейный проход.
- Сложность по памяти (M): O(n + m). Алгоритм создает полностью новые объекты ListNode для результирующего списка.
Зачем использованы два метода?
В данной работе реализовано два подхода для демонстрации понимания различных сценариев разработки:
- Демонстрация эффективности (In-Place): Этот метод ориентирован на максимальную производительность и минимальное потребление ресурсов. Он идеально подходит для алгоритмических соревнований (LeetCode), где критичны лимиты памяти.
- Демонстрация чистоты архитектуры (Immutable): Этот метод следует принципу No Side Effects. В реальных энтерпрайз-системах (The evgeny87 Way) важно, чтобы входные данные оставались неизменными. Использование Immutable-подхода гарантирует, что исходные списки не будут "испорчены" в процессе слияния, что предотвращает трудноуловимые баги в других частях системы, которые могут использовать те же объекты.
All versions of leetcode-task with dependencies
PHP Build Version
Package Version
Requires
php Version
>=8.4
The package evgeny87/leetcode-task contains the following files
Loading the files please wait ...