Alexandr
в сегодняшней оказывается можно просто значения свопать, а не ноды 🤦‍♂️
Ilia
в сегодняшней оказывается можно просто значения свопать, а не ноды 🤦‍♂️
в линкед листах всегда так можно, там хоть массив значений создай, а верни полностью новые объекты, все равно пройдет
Ilia
на подумать, как можно in place сделать изменения, например )
Roman
ага, но тогда непонятно, почему она medium :)
наверное, потому что можно придумать алгоритм на 1 проход, а не 2 или 3
Roman
А какой за два?
length+start, end, swap
Roman
length+start, end, swap
или length, start+end, swap
Evgeniy
length+start, end, swap
Не уловил 🤔
Evgeniy
Я в массив складывал, один проход. И свопал
Roman
ну сначала считаем длину (первый проход), потом во втором проходе ищем и начало (count++ == k) и конец (count == length - k), так находишь 2 ссылки на узлы start и end, а потом значение свопаешь
Roman
А за один проход можно O(n), O(1) можно пустить сначала первый указатель на k (так мы найдем start) и потом пустить этот же указатель до конца списка со вторым указателем с начала, тогда мы двинем второй указатель ровно на length - k+1, то есть конец.
Roman
в коде это выглядит вот так let slow = head; let fast = head; let start = null; let end = null; let i = 0; while (fast != null && i < k) { start = fast; fast = fast.next; i++; } while (fast != null) { slow = slow.next; fast = fast.next; } end = slow;
Roman
Я в массив складывал, один проход. И свопал
вроде, в списках всегда хотят inplace алгоритмы)
Ilia
вроде, в списках всегда хотят inplace алгоритмы)
У них даже в solution свап значений просто
Evgeniy
вроде, в списках всегда хотят inplace алгоритмы)
В описании не было ограничений
Roman
У них даже в solution свап значений просто
я тоже просто сделал потом start.val, end.val = end.val, start.val. Я имел ввиду, что желательно не сгладывать список в массив, делать операции над массивом, а потом обратно в список собирать. Но может я что-то не так понял)
Roman
https://leetcode.com/problems/reverse-nodes-in-k-group/ вот похожая задача, но сложнее)
Evgeniy
https://leetcode.com/problems/reverse-nodes-in-k-group/ вот похожая задача, но сложнее)
Посмотрел. У меня она решена каким-то набором while и if :)
Порридж В Ко-ливинге
Очень забавный результат можно получить если сделать sudo xxd /dev/diskn | less и достаточно долго листать. Пример из начала диска (там с начала была инфа о кодировке и куча пустого места, а потом это)
Порридж В Ко-ливинге
А все знали что у Литкода в Питоне есть переменная path, которую он просто так не дает вывести?) Это массив с 6ю значениями, все из них пути
Anonymous
привет, а почему у данного алгоритма сложность O(n) а не O(n + m) ? Мы же дважды перебираем циклом элементы void moveZeroes(vector<int>& nums) { int lastNonZeroFoundAt = 0; for (int i = 0; i < nums.size(); i++) { if (nums[i] != 0) { nums[lastNonZeroFoundAt++] = nums[i]; } } for (int i = lastNonZeroFoundAt; i < nums.size(); i++) { nums[i] = 0; } }
Roman
whimsical.com - не знаю кому-нибудь пригодится или нет, но я сейчас готовлюсь к system design и мне эта тулза очень зашла (пс, позволяет рисовать схемы) 🙂
Roman
Куда-то в определенное место готовишься, в смысле собес назначен? Или на будущее?
поставил себе дедлайн до 1 апреля, потом подаю в продуктовые компании с хотя бы seedом, типа graphcms, prismic, bolt, discord, tripadvisor, notion.so etc.
Roman
кстати, не советую покупать algoexpert 🙂
Порридж В Ко-ливинге
Порридж В Ко-ливинге
Кстати, кто за сколько строк сегодняшнюю решил?
Viktor
кстати, не советую покупать algoexpert 🙂
Это уже интересно, почему? :-)
Alex Azarov
Alex Azarov
$24 доллара, вот это амазон разщедрился
Alex Azarov
правда доставка в Беларусь $43(
Roman
Это уже интересно, почему? :-)
материал достаточно тривиальный что в алгоритмах, что в систем дизайне. Допустим, в систем дизайне не расскрываются некоторые термины, определения систем, типа blob storage (они просто используют их без каких-либо пояснений), не рассказывают в чем отличие nosql от relational databases. Хотя некоторые вещи они покрывают детально такие, как балансировщик нагрузок. В алгоритмической части решения некоторых задач приводятся субоптимальные, некоторые задачи достаточно общедоступные типа реализовать сортировку или реализовать quickselect или djikstra. Нет какого-то общего входа в тему, типа ДП и что это такое, где зачастую используются какими правилами руководствоваться, чтобы его применять и т.д. Ну и самого Климента слушать такое себе (ужасно шепелявит)
Ilia
О, а в ней много картинок?
Ilia
На Киндл чтоли купить )
Roman
https://github.com/PlayerForever/CS_eBooks/blob/master/Cracking%20the%20Coding%20Interview%206th%20Edition.pdf 🙂
Alex Azarov
Кстати мне рекрутер Гугла прислал пару книжек для подготовки, прямо в pdf, включая Cracking the Code Interview. Бесплатно.
Alex Azarov
прикол
Alex Azarov
ну раз гуглу можно, пойду тоже спирачу
Ilia
https://github.com/PlayerForever/CS_eBooks/blob/master/Cracking%20the%20Coding%20Interview%206th%20Edition.pdf 🙂
Стараюсь прийти к легализации контента, плюс пдф на киндле смотрятся не очень
Roman
Стараюсь прийти к легализации контента, плюс пдф на киндле смотрятся не очень
Я вот, честно говоря, не знаю как покупать электронные книги. Бумажные в магазинах - это другое дело, там можно постоять, почитать, понять зайдет тебе или нет, а вот электронные ну такое себе, хотя автор и высылает пробную часть, типа какие-нибудь ~30 первых страниц, все равно это зачастую интро, из которого ничего не поймешь
Ilia
Профессиональную просто так не купишь не глядя
Ilia
С профессиональной можно в инете пдфку посмотреть, да. и само собой тяжело платить за то, что вот доступно прямо здесь и бесплатно
Ilia
Но это чистая совесть перед собой и благодарность автору, несмотря на огромную цепочку взаимоотношений с издательствами
Ilia
Сам на 100% в книгах и сериалах ещё не пришёл к этому, каюсь. Остальное легче далось )
Roman
Ну я скорее в книгах 100% пират, а вот за софт 100% все оплачиваю)
Roman
ну для музыки и фильмов я стримингом пользуюсь, а из игр только в бесплатные играю - CS:GO и Dota)
Sergei
Back to back swe такой классный!
Roman
А notion живой ещё?
Notion.so? Живее живых)
Victor
я уж не знаю как они как работодатель, но как сервис они довольно круты. Если в паблик и API релизнут, то вообще займут нехилую долю рынка
Sergei
Там история такая, Сомали решили себе все свои домены .co забрать и много компаний пострадало и в целом у них были проблемы с перформансом и доступностью, в твиттере часто люди жаловались. До сих пор работают над ситуацией https://www.reddit.com/r/Notion/comments/m2k3tr/on_notions_current_state/
Sergei
А как сервис, да, крутые, я даже знаю компании, которые свои статические сайты собирают на gatsby из данных в notion
Null
Happy Monday! 👋 На этой неделе будем определять является ли указанное дерево двоичным деревом поиска. Хорошая задача на рекурсию и деревья, разберём два решения. https://vitkarpov.me/posts/validate-binary-search-tree/
crisper
Привет , а есть материалы хорошие по merkle tree я что то вообще не понимаю его ((
Viktor
Вряд ли merkle tree спросят на собеседованиях.
crisper
Привет, блокчейнишь? 😉
Нет ) просто пытаюсь понять его )
Sergei
Интересно, почему reverse integer в разделе string? Или это только для решений на JavaScript 😂
Sergei
Happy Monday! 👋 На этой неделе будем определять является ли указанное дерево двоичным деревом поиска. Хорошая задача на рекурсию и деревья, разберём два решения. https://vitkarpov.me/posts/validate-binary-search-tree/
Мне второй вариант с inorder обходом сразу в голову пришёл, но я опять утонул в рекурсии пытаясь предыдущее значение передавать вторым параметром, но в итоге не осилил и подглядел у тебя) так вообще возможно?
Viktor
Мне второй вариант с inorder обходом сразу в голову пришёл, но я опять утонул в рекурсии пытаясь предыдущее значение передавать вторым параметром, но в итоге не осилил и подглядел у тебя) так вообще возможно?
Наверное, возможно, да. Просто тут важно нарисовать дерево вызовов, а иначе легко запутаться в каком порядке что ты будешь писать и читать.
Viktor
в рекурсии надо научиться ещё мыслить возвращаемым значением.
Viktor
я сперва всегда передавал какой-то стейт вторым аргументом, который менял по ссылке.
Viktor
а рекурсия нужна просто что бы дерево обойти.
Yuriy
Можно еще не передавать min,max в ф-цию, а возвращать их из ф-ции. Что-то вроде struct State { int min; int max; bool isValid; }
Yuriy
Тогда сначала сравниваешь левую ноду с собой, если ок, вызываешь рекурсивно и смотришь сначала на параметр isValid, если ок, то сравниваешь с max значением, ну а для правой наоборот сравниваешь c min
Yuriy
Если что-то не совпало, ставишь флаг isValid = false и возвращаешь наверх
aTan
Back to back swe такой классный!
Он как раз рекурсию классно обьясняет. На примере Reverse linked list, после этого намного легче задачи пошли рекурсивно