Viktor
там чувак прямо образцово-показательное интервью показал
Порридж В Ко-ливинге
Ой
Порридж В Ко-ливинге
Как-то не ловко вышло сегодня
Порридж В Ко-ливинге
Сел я значит как обычно тупить
Порридж В Ко-ливинге
Тратить 2-3 часа на Литкод
Порридж В Ко-ливинге
Сделал первое попавщееся в голову решение (ну минут 20-30 думал)
Порридж В Ко-ливинге
И Accepted
Порридж В Ко-ливинге
Без психов, непонятного поведения и ошибок...
Порридж В Ко-ливинге
Очень странное чувство, когда очевидная мысль работает без костылей, у меня даже такое чувство, как будто литкод лаганул и принял
Порридж В Ко-ливинге
Ладно, жду когда закончит кто-нибудь (@vitkarpov @KlenZeleny ?) и попрошу сделать код ревью или предложит более элегантное решение
Порридж В Ко-ливинге
А то я в шоке до сих пор
Viktor
Ладно, жду когда закончит кто-нибудь (@vitkarpov @KlenZeleny ?) и попрошу сделать код ревью или предложит более элегантное решение
Сделал. Решал через стек, причём даны векторы и удобно с ними работать сразу как со стеками, снимая элементы с конца, а потом просто развернуть ответ. В итоге, время O(N + M) и память O(1) если не считать вектор под ответ (иначе тоже `O(N+M)`)
Viktor
@Glazomer47 code review, pls, https://gist.github.com/vitkarpov/ebd1541bf5deb9d9f8fab9416621ff11
Viktor
Кстати, в последнее время работаю строго по помодоро и заметил реальный прогресс! Прямо вот эти магические 25 минут таймера заставляются сконцентрироваться 😄
Viktor
Конкретно вот эту задачу решил за 20 минут: от момента как увидел условие до момента как сдал. Для меня это очень быстро, обычно я намного дольше сижу! И вот как показывает практика с таймером — как раз потому что много отвлекаюсь.
Viktor
Это первый раз так быстро или уже закономерность?
Зависит от задачи, конечно. Прямо за 20 минут целиком это первый, да.
Viktor
Обычно я делаю перерыв после 25 минут, когда таймер заканчивается.
Порридж В Ко-ливинге
Порридж В Ко-ливинге
Читабельнее в разы
Порридж В Ко-ливинге
Ну, в 2-3 раза
Порридж В Ко-ливинге
Я повторяю код
Порридж В Ко-ливинге
Когда этого можно не делать
Порридж В Ко-ливинге
Понял в чем моя проблема
Viktor
Красивее чем у меня код
Вообще сейчас посмотрел и понял, что наверное зря упёрся в стеки — можно реально двумя указателями от конца пройтись и не портить исходные данные 😄
Viktor
Перемудрил слегка.
Порридж В Ко-ливинге
Меня бесяц итераторы в плюсах
Порридж В Ко-ливинге
Они спрогие капец...
Порридж В Ко-ливинге
С конца нормально не прокрутишь
Viktor
С конца нормально не прокрутишь
ну, rbegin/rend, по идее, должны так же работать
Viktor
но с итераторами в целом надо быть осторожным, как бы не инвалидировалось чего
Порридж В Ко-ливинге
Порридж В Ко-ливинге
Порридж В Ко-ливинге
Или так можно только с gist делать
Viktor
ну, если нет приватного репо на GitHub
Viktor
Всм?
ну элементарный пример — происходит в векторе resize из-за увеличения capacity и если где-то запоминал ссылки на указатели, рассчитывая, что они будут на те же участки памяти указывать всегда, то будет беда.
Viktor
для этого в документации к контейнерам надо смотреть гарантируется ли неинвалидация итератора или нет
Порридж В Ко-ливинге
Кстати с итераторами и листами может не может быть инвалидации
Порридж В Ко-ливинге
Но может быть ошибка
Порридж В Ко-ливинге
Если уничтожить элемент
Viktor
ага. классический пример это когда ты итерируешься по контейнеру и делаешь erase в том же самом цикле
Viktor
и будет потом работать через раз
Evgeniy
Но до сих пор сижу думаю над O(N)
Булев массив длины target+1
Порридж В Ко-ливинге
Порридж В Ко-ливинге
Через Словарь
Evgeniy
Evgeniy
https://leetcode.com/problems/interval-list-intersections/discuss/647641/C-simple-O(n)-solution
Порридж В Ко-ливинге
Порридж В Ко-ливинге
Только if какой-то страшный
Evgeniy
Тоже самое что и у Виктора
Не смотрел решение
Порридж В Ко-ливинге
https://pastebin.com/NF1aFew3
Это я переделал его
Viktor
Тоже самое что и у Виктора
Не совсем, скорее как у тебя, с указателями. Я там ещё снимал элементы со стека.
Evgeniy
Только if какой-то страшный
В if проверка на то, что начало одного интервала находится внутри другого интервала
Evgeniy
А у вас как?
Порридж В Ко-ливинге
https://pastebin.com/NF1aFew3
Просто читается хуже чем
Порридж В Ко-ливинге
А у вас как?
Да абсолютно так же
Порридж В Ко-ливинге
Я сделал через индексы
Viktor
В if проверка на то, что начало одного интервала находится внутри другого интервала
хм, а зачем она такая сложная? у меня аналогичная проверка вот такая: https://gist.github.com/vitkarpov/ebd1541bf5deb9d9f8fab9416621ff11#file-interval-intersection-cpp-L13
Evgeniy
А почему reverse в конце?
Viktor
А почему reverse в конце?
а я с конца иду
Порридж В Ко-ливинге
А почему reverse в конце?
Это Виктор на скору руку сделал
Порридж В Ко-ливинге
Он решил как можно быстрее
Evgeniy
Но не сразу до этого дошел
Evgeniy
Сначала думал про кучу ифоф
Viktor
Это Виктор на скору руку сделал
да не, всё верно. я ж с конца иду, поэтому надо reverse 🙂
Порридж В Ко-ливинге
Порридж В Ко-ливинге
Как обычно, щас wrong answerвылезет, буду в голове дебажить
Порридж В Ко-ливинге
А тут неожиданно сразу accepted