Alexandr
в сегодняшней оказывается можно просто значения свопать, а не ноды 🤦♂️
Alexandr
Ilia
на подумать, как можно in place сделать изменения, например )
Evgeniy
Evgeniy
Evgeniy
Я в массив складывал, один проход. И свопал
Roman
ну сначала считаем длину (первый проход), потом во втором проходе ищем и начало (count++ == k) и конец (count == length - k), так находишь 2 ссылки на узлы start и end, а потом значение свопаешь
Evgeniy
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;
Evgeniy
Ilia
Evgeniy
Roman
У них даже в solution свап значений просто
я тоже просто сделал потом start.val, end.val = end.val, start.val. Я имел ввиду, что желательно не сгладывать список в массив, делать операции над массивом, а потом обратно в список собирать. Но может я что-то не так понял)
Roman
https://leetcode.com/problems/reverse-nodes-in-k-group/ вот похожая задача, но сложнее)
Evgeniy
Порридж В Ко-ливинге
Очень забавный результат можно получить если сделать 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;
}
}
Viktor
Anonymous
Roman
whimsical.com - не знаю кому-нибудь пригодится или нет, но я сейчас готовлюсь к system design и мне эта тулза очень зашла (пс, позволяет рисовать схемы) 🙂
Viktor
Roman
кстати, не советую покупать algoexpert 🙂
Порридж В Ко-ливинге
Порридж В Ко-ливинге
Кстати, кто за сколько строк сегодняшнюю решил?
Viktor
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
Roman
Стараюсь прийти к легализации контента, плюс пдф на киндле смотрятся не очень
Я вот, честно говоря, не знаю как покупать электронные книги. Бумажные в магазинах - это другое дело, там можно постоять, почитать, понять зайдет тебе или нет, а вот электронные ну такое себе, хотя автор и высылает пробную часть, типа какие-нибудь ~30 первых страниц, все равно это зачастую интро, из которого ничего не поймешь
Ilia
Я вот, честно говоря, не знаю как покупать электронные книги. Бумажные в магазинах - это другое дело, там можно постоять, почитать, понять зайдет тебе или нет, а вот электронные ну такое себе, хотя автор и высылает пробную часть, типа какие-нибудь ~30 первых страниц, все равно это зачастую интро, из которого ничего не поймешь
Ну одно дело про худ литературу, а другое профессиональную
Ilia
Профессиональную просто так не купишь не глядя
Ilia
С профессиональной можно в инете пдфку посмотреть, да. и само собой тяжело платить за то, что вот доступно прямо здесь и бесплатно
Ilia
Но это чистая совесть перед собой и благодарность автору, несмотря на огромную цепочку взаимоотношений с издательствами
Ilia
Сам на 100% в книгах и сериалах ещё не пришёл к этому, каюсь. Остальное легче далось )
Roman
Ну я скорее в книгах 100% пират, а вот за софт 100% все оплачиваю)
Ilia
Roman
ну для музыки и фильмов я стримингом пользуюсь, а из игр только в бесплатные играю - CS:GO и Dota)
Ilia
Sergei
Sergei
Back to back swe такой классный!
Victor
я уж не знаю как они как работодатель, но как сервис они довольно круты.
Если в паблик и API релизнут, то вообще займут нехилую долю рынка
Sergei
Там история такая, Сомали решили себе все свои домены .co забрать и много компаний пострадало и в целом у них были проблемы с перформансом и доступностью, в твиттере часто люди жаловались. До сих пор работают над ситуацией https://www.reddit.com/r/Notion/comments/m2k3tr/on_notions_current_state/
Victor
Sergei
А как сервис, да, крутые, я даже знаю компании, которые свои статические сайты собирают на gatsby из данных в notion
Victor
Null
Happy Monday! 👋
На этой неделе будем определять является ли указанное дерево двоичным деревом поиска. Хорошая задача на рекурсию и деревья, разберём два решения.
https://vitkarpov.me/posts/validate-binary-search-tree/
crisper
Привет , а есть материалы хорошие по merkle tree я что то вообще не понимаю его ((
Viktor
Viktor
Вряд ли merkle tree спросят на собеседованиях.
Sergei
Интересно, почему reverse integer в разделе string? Или это только для решений на JavaScript 😂
Sergei
Viktor
Viktor
в рекурсии надо научиться ещё мыслить возвращаемым значением.
Viktor
я сперва всегда передавал какой-то стейт вторым аргументом, который менял по ссылке.
Viktor
а рекурсия нужна просто что бы дерево обойти.
Yuriy
Можно еще не передавать min,max в ф-цию, а возвращать их из ф-ции. Что-то вроде
struct State {
int min;
int max;
bool isValid;
}
Yuriy
Тогда сначала сравниваешь левую ноду с собой, если ок, вызываешь рекурсивно и смотришь сначала на параметр isValid, если ок, то сравниваешь с max значением, ну а для правой наоборот сравниваешь c min
Yuriy
Если что-то не совпало, ставишь флаг isValid = false и возвращаешь наверх
Viktor
Sergei