From 07c35d3fc05b4774ff58ae443fdf233b1297faf9 Mon Sep 17 00:00:00 2001 From: Maxim Melnik Date: Wed, 13 Sep 2023 20:21:01 +0300 Subject: [PATCH] Added algo and task description --- README.md | 27 +++++++++--------- application/console/app.php | 57 +++++++++++++++++++++++++++++++++++++ 2 files changed, 71 insertions(+), 13 deletions(-) create mode 100644 application/console/app.php diff --git a/README.md b/README.md index ddd69114a..feabe25a7 100644 --- a/README.md +++ b/README.md @@ -4,15 +4,18 @@ https://otus.ru/lessons/razrabotchik-php/?utm_source=github&utm_medium=free&utm_ # Задание -Docker -1. Установить Docker себе на локальную машину -2. Описать инфраструктуру в Docker-compose, которая включает в себя -3. nginx (обрабатывает статику, пробрасывает выполнение скриптов в fpm) -4. php-fpm (соединяется с nginx через unix-сокет) -5. redis (соединяется с php по порту) -6. memcached (соединяется с php по порту) -7. БД подключать как отдельную VM (можно на базе Homestead), либо как контейнер (но тогда не забудьте про директории с данными) -8. Не забудьте про Composer +Решить задачу https://leetcode.com/problems/merge-two-sorted-lists/ на слияние двух списков + + +## Описание/Пошаговая инструкция выполнения домашнего задания: +- Решаем задачу +- Прикладываем код на GitHub +- Обосновываем сложность + +## Критерии оценки: +- Решение имеет оптимальную сложность +- Учтены исключительные случаи +- Решение проходит тесты # Установка @@ -41,9 +44,7 @@ cd application && cp .env.example .env sudo docker compose up -d ``` -Добавьте сайт `mysite.local` в файл `hosts` +Для проверки алгоритма запустите следующую команду: ```bash -127.0.0.1 mysite.local +sudo docker container exec -it myapp-php-dev bash -c "cd /data/www && php console/app.php" ``` - -Готово! diff --git a/application/console/app.php b/application/console/app.php new file mode 100644 index 000000000..266986216 --- /dev/null +++ b/application/console/app.php @@ -0,0 +1,57 @@ +val = $val; + $this->next = $next; + } +} + +class Solution { + public function mergeTwoLists(ListNode $list1, ListNode $list2): ListNode { + $start = $currentListNode = new ListNode(); + + while ($list1 && $list2) { + if ($list1->val <= $list2->val) { + $new = new ListNode($list1->val, null); + $currentListNode->next = $new; + $currentListNode = $new; + $list1 = $list1->next; + } else { + $new = new ListNode($list2->val, null); + $currentListNode->next = $new; + $currentListNode = $new; + $list2 = $list2->next; + } + } + + if ($list1 || $list2) { + $currentListNode->next = $list1 ?? $list2; + } + + return $start->next; + } +} + +// 4 - 2 - 1 +$list1 = new ListNode(4); +$list1 = new ListNode(2, $list1); +$list1 = new ListNode(1, $list1); + +// 5 - 2 - 1 +$list2 = new ListNode(5); +$list2 = new ListNode(2, $list2); +$list2 = new ListNode(1, $list2); + +$echoList = (new Solution())->mergeTwoLists($list1, $list2); + +while ($echoList) { + echo $echoList->val . PHP_EOL; + $echoList = $echoList->next; +} +