Пікірлер
@Ramosok
@Ramosok 14 күн бұрын
супер спасибо!
@moloko04goda
@moloko04goda 14 күн бұрын
Прекрасно
@igorafonkin2648
@igorafonkin2648 15 күн бұрын
Видео хорошее, а вот задачка странная 😅
@alex_molo1217
@alex_molo1217 16 күн бұрын
Елена, подскажите, будет ли продолжение?
@webelart
@webelart 13 күн бұрын
да
@Gennady41
@Gennady41 16 күн бұрын
Вот со слэшами путаница - прямой слэш - /, бэкслэш (обратный) - \
@НикитаКлусович
@НикитаКлусович 17 күн бұрын
Спасибо за видео ) не знаю почем, но сложные задачки на литкоде обхожу, решена была только одна, поставил видео на паузу, решил минут за 10, зашла проще чем некоторые easy) спасибо за видео тоже солвнул обходом в ширину) var serialize = function(root) { const result = []; if(!root) { return []; } const queue = [root]; result.push(root.val) while(queue.length) { const curr = queue.shift(); result.push(curr.left?.val ?? null); result.push(curr.right?.val ?? null); if(curr.left) { queue.push(curr.left); } if(curr.right) { queue.push(curr.right) } } while(result[result.length - 1] === null) { result.pop() } return result; }; /** * Decodes your encoded data to tree. * * @param {string} data * @return {TreeNode} */ var deserialize = function(data) { if(!data.length) { return null; } const root = new TreeNode(data[0]); const queue = [root]; for(let i = 1; i < data.length; i++) { const left = data[i]; i++; const right = data[i]; const current = queue.shift(); if(left !== null && left !== undefined) { current.left = new TreeNode(left); queue.push(current.left) } if(right !== null && right !== undefined) { current.right = new TreeNode(right); queue.push(current.right) } } return root; };
@webelart
@webelart 17 күн бұрын
Молодчина!💪
@normajean9723
@normajean9723 17 күн бұрын
Спасибо, очень понятный разбор задачи, особенно если уже смотрел другие видео с деревьями на канале. Хотелось бы ещё больше контента с деревьями ))
@GioMikadzegio9000
@GioMikadzegio9000 18 күн бұрын
спасибо ! круто ! как можно стать вашим учеником ?:)) "Считаю, что видео сверстано некорректно! Нельзя делать окно с кодом больше, чем окно спикера. Это просто преступление против красоты! Новая прическа - огонь." я исправлю эту ошибку😂
@unicoxr5tj417
@unicoxr5tj417 18 күн бұрын
кака кодерша-голубоглазка🤩
@yennms5547
@yennms5547 18 күн бұрын
Пока что поставил паузу и захотелось сначала решить задачу самому) У вас очень приятный голос)
@pooltechnology
@pooltechnology 18 күн бұрын
Считаю, что видео сверстано некорректно! Нельзя делать окно с кодом больше, чем окно спикера. Это просто преступление против красоты! Новая прическа - огонь.
@webelart
@webelart 18 күн бұрын
🥰❤️😍
@АлексейТ-з3ь
@АлексейТ-з3ь 18 күн бұрын
куиуи queue ммм просто музыка )
@ЮрийНадолинный
@ЮрийНадолинный 22 күн бұрын
спасибо!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!👍
@tawiasmajero1519
@tawiasmajero1519 23 күн бұрын
Спасибо, очень помогло разобраться!
@webelart
@webelart 23 күн бұрын
@МарияМария-ю4с
@МарияМария-ю4с 24 күн бұрын
Вы прекрасны))
@webelart
@webelart 23 күн бұрын
Спасибо, Вы тоже!
@bioman810
@bioman810 25 күн бұрын
Только у вас тут не stack, а queue, если чисто к терминологии придераться. Ибо как таковая разница между dfs и bfs в том, что в одном случае используется stack, а в другом queue
@webelart
@webelart 25 күн бұрын
Да, я думала про это написать. Т.к. обычно называю переменную stack. Но корректно queue. Молодец, что заметил!
@webelart
@webelart 25 күн бұрын
Конкретно в этом примере очередь!
@Mr.Bellamy
@Mr.Bellamy 25 күн бұрын
Такой контент мы любим, жалко редко выходит
@muvahidhoschi2652
@muvahidhoschi2652 25 күн бұрын
Посоветуй пожалуйста как улучшить понимание решение задач, может какие то книжки?
@webelart
@webelart 23 күн бұрын
Просто решать. 1. Для начала улучшаете знание языка в целом, проходите книгу от А до Я, например для JS - эту learn.javascript.ru. 2. Походу изучения, регистрируетесь на сайте любом по решению задач. И берете легкий уровень и пробуете решать. Хоть как. Не получается - следующую задачу и т.д. И так до тех пор пока не получится. 3. Классно, чтобы был ментор, т.е. если вообще не получается с задачами, либо в целом по изучению новых подходов и когда просто не понятно, и чтобы мотивация не падала, классно, чтобы получалось, спросить совета у коллеги выше. Как делала я в прошлом. Использовала всё, но важно стараться решить самому хоть как-то, дальше уже можно разобрать и поспрашивать. Также изучить готовые варианты, либо теорию и тогда понимание новых концепций будет заходить намного лучше, если вы сами попробовали.
@muvahidhoschi2652
@muvahidhoschi2652 21 күн бұрын
@@webelart Спасибо решение задач очень сложно дается
@p_levin
@p_levin 25 күн бұрын
Молодец. Отлично - всё :)
@NeverGTI
@NeverGTI 25 күн бұрын
Голос мега приятный, как видео открыл, все дела забросил и залип. Можно надеяться на асмр видео, например с кодингом? )
@webelart
@webelart 25 күн бұрын
Спасибо! Что такое асмр?
@nick-rrdd
@nick-rrdd 26 күн бұрын
Очень крутой выпуск! 🔥 Мне лишь немного не хватило с объяснением useEffect в части Did unmount (с ретёрном, отпиской и тд)
@ЮрийНадолинный
@ЮрийНадолинный 26 күн бұрын
спасибо !!!!!!!!!!!!!!!!👍
@romanmed9035
@romanmed9035 26 күн бұрын
рад что Вы вернулись. да и тема интересная. к тому же на двух языках сразу. просто клад. ведение лекции вообще стало совсем отлично, как преподаватель в вузе.
@webelart
@webelart 26 күн бұрын
Спасибо за отзыв.
@vmaysov
@vmaysov 26 күн бұрын
Лена, привет! Нравится ваша академичность и фундаментальный подход. Не планируете разбирать что-либо более прикладное, например, фильтры товаров интернет-магазина или что-то в этом роде?
@webelart
@webelart 26 күн бұрын
Посмотрим, спасибо!
@tomvenom
@tomvenom 26 күн бұрын
Елена,скажите пожалуйста,насколько важно хорошо уметь верстать фронтендеру? Нужно ли учить предпроцессоры или достаточно знать CSS?
@webelart
@webelart 26 күн бұрын
Верстать, конечно, важно. Можно без препроцессоров. Сейчас больше делается акцент на чистом css. Да и в целом если где-то в компании встретится sass, scss, less, то там не сложно это понять. Основной язык, конечно CSS.
@tomvenom
@tomvenom 26 күн бұрын
@ а сколько времени +- достаточно уделять верстке,прежде чем перейти на js? Месяца 2 или это много?
@webelart
@webelart 26 күн бұрын
@@tomvenom вообще я бы вместе учила CSS, HTML + JS. Они в целом не отделимы сейчас. Изначально в вузе у нас был дополнительный курс исключительно CSS + HTML - это как прослушать базу и возможно попробовать какие-то вещи, а дальше уже вместе пробуете решать задачи.
@2Extremum
@2Extremum 24 күн бұрын
​@@tomvenom Уделять время верстке нужно все время, пока работаешь даже. Потому что выходит очень много полезного, скорость принятия новых фич в последние годы набрала нереальные обороты и очень многое из того что фронтендер будет делать на js уже легко можно сделать на css, что существенно быстрее и менее ресурсозатратно. И SCSS - это стандарт для нормального фронта, потому как CSS хорош, но миксины не подвезли и не планируют пока даже.
@tomvenom
@tomvenom 26 күн бұрын
Очень шикарно выглядите)
@webelart
@webelart 26 күн бұрын
Спасибо! 😌
@СергейСорокин-т8у
@СергейСорокин-т8у 26 күн бұрын
Привет! Я бы ввёл переменную last_level для уровня, на котором последний раз был выведен элемент в result. Дерево обходим сначала направо, потом налево. В текущей вершине результат пишем только в том случае, если текущий уровень ниже last_level (и корректируем last_level). Таким образом, писать в result мы будем только один раз для каждого уровня, а не переписывать туда вообще все элементы по очереди. Но вообще, самая медленная операция тут будет stack.push, по крайней мере если это делать на С++. Вторая по медленности - гуляние по указателям left/right. Поэтому хорошее решение этой задачи - пройтись как раз по тому самому представлению дерева в виде массива ({1, 2, 3, null, 5, null, 4}) и решить её на этом представлении.
@webelart
@webelart 26 күн бұрын
Я переживала относительно stack.shift(). Т.к. удаление сначала. Значит должен пересоздаваться массив. И в целом можно просто идти с индексом, но вновь будет shift push. Кстати, а какие затраты по памяти у stack.push(). Мне казалось в C++ это логарифм.
@СергейСорокин-т8у
@СергейСорокин-т8у 26 күн бұрын
Тут такой момент... Если решать задачи на Leetcode, то анализа по алгоритмической сложности О(что-нибудь) достаточно. Но на практике, если есть реально много данных и нужно быстро обрабатывать может получится, что просто анализа по алгоритмической сложности может быть недостаточно. И вопрос, как например конкретно сделана та или другая шех-таблица может стать решающим и давать ускорения на порядок, хотя для анализа сложности они типа одинаковые. Я, например, видел ситуации когда хеш-таблицы из Qt тратили пару минут просто на освобождение памяти после работы. Гуляние по системе указателей (как в том же дереве) тоже работает медленно, потому что она не дружелюбна к кэшу процессора. И в конечном итоге ты приходишь к пониманию, что на практике быстро работает только одна структура данных - массив/вектор или как оно там называется в конкретном языке, где просто всё лежит непрерывно в памяти и доступно по индексу. В С++ в частности проблема в том, что выделение памяти работает очень медленно, а все стандартные структуры данных сложнее массива выделяют что-нибудь при каждой вставке (вроде в последний стандарт добавили вариант, который так не делает). Stack можно сделать из обычного массива, сложность операций О(1) (не логарифм, логарифм это вставка в дерево, если нам нужно упорядочивать данные!), но его тоже надо реалацировать при добавлении данных, и тут уже вопрос будет ли он отдавать память, когда из стека данные вынимают или нет, и как много выделений-освобождений памяти получится в результате. > И в целом можно просто идти с индексом, но вновь будет shift push. Если работать с деревом как с деревом, типа там ссылки вправо-влево, то по всем признакам да, нужно иметь стек (или использовать рекурсию, которая сделана через системный стек). Но. Мне кажется, процентов на 99.99%, так как я не пробовал реализовать, что имея представление в виде массива можно решить эту задачу без рекурсии. Потому что там элементы каждого уровня лежат последовательными блоками, и нам нужно просто выдать последний из них, который не является null. Так что это должно быть можно сделать за один проход по массиву с использованием нескольких переменных и без стека. А, если ты хочешь ещё глубже в эту кроличью нору, не факт, что такой порядок укладывания дерева в массив является оптимальным (для задачи поиска элемента за log(n))... По крайней мере двоичный поиск по отсортированному массиву можно разгонять в десятки раз, меняя порядок хранения элементов, а тут похожая штука.
@НикитаКлусович
@НикитаКлусович 27 күн бұрын
люблю ваши видео, спасибо) отлично как всегда) перед просмотром видео, поставил на паузу, чобы попробывать решить самостоятельно ) мне кажется чуть проще для восприятия получилось за счет деструкторизации var rightSideView = function (root) { const result = []; if (!root) { return result; } const queue = [{ level: 0, node: root }]; while (queue.length) { const {node, level} = queue.shift(); result[level] = node.val; if (node.left) { queue.push({ level: level + 1, node: node.left }); } if (node.right) { queue.push({ level: level + 1, node: node.right }); } } return result; };
@webelart
@webelart 27 күн бұрын
Отличный результат!
@николайкраснов-р3о
@николайкраснов-р3о 27 күн бұрын
Привет родная)
@ЮрийЮзгин
@ЮрийЮзгин 27 күн бұрын
Спасибо! Интересный разбор задачи!
@dimanjacky
@dimanjacky 27 күн бұрын
Очень приятно! Интересная тема. Спасибо! Давно вас не было. Хотелось бы больше видео!
@sergeym6905
@sergeym6905 27 күн бұрын
С возвращением! Как по мне, идея записывать видео с решением прикольных задач - просто огонь. Спасибо!
@Gfifful
@Gfifful Ай бұрын
Спасибо
@AlexanderCrypto5
@AlexanderCrypto5 Ай бұрын
Хорошее видео
@webelart
@webelart Ай бұрын
Спасибо!
@AlexanderCrypto5
@AlexanderCrypto5 Ай бұрын
@@webelart Вам огромное спасибо, очень информативное и полезное видео, как раз полностью раскрывается useMemo, useCallback
@zizzxiii2714
@zizzxiii2714 Ай бұрын
Спасибо вам ❤
@TONY_BERG_BLOGER
@TONY_BERG_BLOGER Ай бұрын
❤❤❤🎉
@vvkbees6473
@vvkbees6473 Ай бұрын
😻
@СеменБлэкморбаев
@СеменБлэкморбаев Ай бұрын
Спасибо Большое за урок! Вот один момент я все же не уловил - Допустим какая то функция вызывает внутри себя SetTimeout с нулем в качестве значения таймаута - далее эта функция заканчивает свое выполнение (допустим ее другие функции не вызывали) - таким образом в момент возврата управления из этой функции СТЕК ВЫЗОВОВ у нас будет пуст - ЗНАЧИТ ЛИ ЭТО, что в данный момент движок JS будет смотреть в очередь событий и , обнаружив там callback (установленный SetTimeout(0) ), вызовет этот каллбэк, поместив его контекст в стек вызовов? Или все же движок JS сначала пройдется по всему коду до конца, выполнит его, а затем тольо обратится к ОЧЕРЕДИ СОБЫТИЙ?
@Стас-е3й3х
@Стас-е3й3х Ай бұрын
Здравствуйте. Помогите пожалуйста разобраться как работает этот код: 1 function b() 2 { console.log('b2') } 3 var b = function() 4 { console.log('b1') } 5 b(); Почему на консоле появится b1, а не b2, b1? Где происходит затирание? Ведь перед выполнением кода у нас создаться глобальный контекст выполнения, где будет объект {b:function(), b:undefinded}. Затем начинается выполнение, переходим на первую строку, выполняем function(), выводим в консоль b2. Глобальный контекст выполнения, изменяется на {b: undefinded, b:undefinded}. Далее переходим на строку 3. Глобальный контекст выполнения, изменяется на {b: function(), b:undefinded}. Вызывается функция, которая присвоена переменной b и на консоле появляется b1.
@iuliiazarfin7578
@iuliiazarfin7578 2 ай бұрын
спасибо, очень помогло разобраться в теме
@dm.hol.3624
@dm.hol.3624 2 ай бұрын
Мидл+ контент, то что надо. А то я вызубрил что-то про хуки, а как использовать - не понимаю. Спасибо.
@angular-developer-e1t
@angular-developer-e1t 2 ай бұрын
Сразу видно что чувствуешь архитектуру. Не чисто на зубрёжке.
@bentonfraizer69
@bentonfraizer69 3 ай бұрын
Елена, спасибо за видео.
@Tadeomnevis
@Tadeomnevis 3 ай бұрын
Елена,вы чудо)!
@yohankim7996
@yohankim7996 4 ай бұрын
I was watching your lecture and set ({tasks: [newtasks, ...tasks]}) Warning: Maximum update depth exceeded. I keep getting this error. Can I check the code?
@alianmanpi35
@alianmanpi35 4 ай бұрын
спасибо большое, отличное видео
@webelart
@webelart 4 ай бұрын
@@alianmanpi35 ❤️
@mcltdtm420
@mcltdtm420 4 ай бұрын
по flatten() действия с удалением и добавлением значений в начало массива очень долгие. первое, что пришло в голову, перебор for'ом и на каждый найденый массив отправлять его в рекурсию. не будет лишних манипуляций з входним массивом, только чтение входного массива и запись в результирующий массив.
@lubovBordunos
@lubovBordunos 4 ай бұрын
Здравствуйте. Спасибо что делитесь информацией. На экране просто и понятно. На практике после ввода кода и нажатия энтер возвращался прежний код и новый цвет не появлялся. Многократно проверяла и с другими кодами. Обновление программы, перезагрузка не помогли. Вдруг Вы знаете решение такой проблемы. Спасибо.
@AntonPivnenko
@AntonPivnenko 4 ай бұрын
Отличный слайдер! Где можно исходники глянуть? Ссылка не работает((
@webelart
@webelart 4 ай бұрын
@@AntonPivnenko я не выкладывала исходники.
@АлександрВидин-с6я
@АлександрВидин-с6я 4 ай бұрын
Не думаю, что использовать хуки по ощущения правильно. Но спасибо за объяснения