Спасибо большое за видео. Есть вопрос, извиняюсь заранее если глупый.. я не очень понял как прийти к решению в первой задаче (которая #136 Single Number). Как работает оператор XOR в теории я понял, но почему именно он помогает нам получить правильный ответ для меня осталось загадкой. Я был бы очень благодарен чуть более подробному объяснению!
XOR для двух одинаковых битов дает 0. Если числа в таком массиве с 1 непарным элементом представить в двоичном виде и выполнить между ними XOR (именно эти 2 действия и делает оператор ^ + ещё обратно в десятичное число преобразует), то биты у повторяющихся чисел дадут 0. Значит, в итоге мы получаем только биты уникального числа, которые ^ вернет нам в десятичном виде
Я литкодер со стажем, многу сказать, что опытный литкодер - это всегда хорошо, но значимость алгоритмов не надо завышать. Часто бывало, что от меня просто требовали знать биг О, решить вопросы уровня easy и так далее. В глубь отнюдь не стоит погружаться тем, кто не имел никогда дело с программированием и кто хочет найти первую стажировку (понятно, что все зависит от компании). Да, будет неплохо прорешать 50 вопросов, но покуда вы не идете в FAANG, то не стоит переусердствовать с тем, что вам пригодится только на интервью (хотя, безусловно, могу сказать, что эта дрянь логику развивает и ты лучше начинаешь решать проблемы в принципе). Новичку гораздо важнее учить фреймворки и писать проекты, чем решать вопросы на DFS, бинарные деревья и жадные алгоритмы. Выучите массивы, хэшмапы, стэки, поинтеры, может даже слайдинг виндоу, но поберегите свое время и на проекты, которые как по мне куда важнее будут.
Спасибо за видео. Смотрел как ты продумываешь логику алгоритма, по ходу дела переделывал для себя на С++. Потом смотрю в комментариях, кому-то на плюсах тоже захотелось. Скинул линк на гитхаб-репозиторий, если ты не против.
Привет! Хорошая подача. Для проверки дерева на сбалансированность у тебя получилась достаточно высокая сложность, глубина будет считаться множество раз на поддеревьях, которые уже были пройдены при подсчёте глубины. Можно совместить подсчёт глубины с проверкой не нарушилось ли условие, так мы закончим работу сразу если встретим несбалансированное поддерево.
Блин, молодой парнишка, такой спокойный, умный, красавчик в общем. Завидую по белому, хочу конечно изучить джаву, но мне уже 35 лет...всю молодость просрал на всякую дичь, доски стругал, фуры водил, потом кое как ближе к тридцатнику запрыгнул в банк, сейчас оркл sql/pl-sql, мечтаю о джаве но понимаю что ее надо было лет с 20 учить чтоб к своим 35 хотя бы как то двигаться...эхх время, не восполнимый ресурс. Всех благ тебе, достижений и побед.
Опыт в других сферах лишним не бывает, только прибавляет интереса к личности :) Спасибо за теплый комментарий. У вас все получится, не ставьте сами себе рамки!)
Все возможно! Я в 31 переехал в Канаду и тут за три года сам выучился и нашел работу программистом. Пока работаю три года по большей части на frontend в Angular, но тоже вот пару месяцев назад начал учить алгоритмы и JAVA.
База. Решение с xor - весьма элегантно, но будет работать только в случае, если в массиве есть числа дубликаты в парах и одно, которое без пары. Все задачки уровня easy. Было бы интересно посмотреть на более сложные. Думаю на собесе такое если и дадут, то только на разогрев. В большинстве случаев дают уровня "медиум"
leetcode это больше о натаскаться на паттерны решения определенных типов задачек. По моему не самый удачный ресурс чтобы влюбиться в алгоритмы. Например книги где алгоритмы применяются к проблемам реального мира более располагают любить алгоритмы. Имхо, на литкоде много "синтетических" задач цель которых - спросить на собеседовании и отобрать тех кто решил ее быстрее других, не думаю что в faang (и толпы компаний им подражающие) наняли тех что не решил задачки, но очень "красиво" думал над их решением.
Для меня тоже сомнительная идея давать алгоритмические задачи с подобных сайтов на собесах Но надо отдать должное, LeetCode неплохо учит подбирать оптимальные структуры данных. После него на код смотришь уже по-другому
Уже лет 10 программирую. Никогда не любил подобные алгозадачи: они бессмысленны и отвлекают от общего дизайна приложения. Ещё их очень сложно читать и отлаживать - а код мы всё же чаще читаем, чем пишем. Если есть возможность это "спрятать" или переложить на стандартную библиотеку, то лучше так и поступить. В любом случае, спасибо автору за хороший материал.
Михаил, а Вы не могли бы объяснить поподробнее, почему в данном случае GC вызывает такую реакцию в стиле «без комментариев»? Я новичок и не понимаю, почему это плохая идея. Единственное объяснение, которое я могу предположить, это то, что авторы решений, где использован GC таким условно «читерским» способом, хотели показать, что их решение более оптимально по использованию памяти на LeetCode. Но, в сущности, чем плохо использование GC в этих примерах?
Пытаться вызвать GC в коде - плохая идея. Этот механизм придумывался для автоматизации сборки мусора. Можно настраивать параметры GC, но вмешиваться в его работу не нужно. Кроме того, сам по себе вызов метода System.gc() не гарантирует начало сборки мусора Авторы таких решений повышают рейтинг не более оптимальными способами решения задачи, а за счет использования особенностей платформы, это и правда читерство)
Да уж. До ксора на собеседовании я бы точно додумался. Вообще как до этого можно додуматься? Это просто надо знать. И скорее всего какой-нибудь школотрон, изучающий паскаль знает это лучше, чем я.
Согласен, но все, что мы знаем - это тоже информация, которую когда-то запомнил наш мозг Почему бы между изучением языков/фреймворков не уделить время дискретной математике и теории чисел?)
1 0 1 мой друг, у меня такой вопрос, коммерческого опыта нет, знаю C, изучаю постоянно Computer Science. Хочу в backend, выбираю между Java, Golang что посоветуешь, чтобы легче было устроиться на работу?
Golang относительно новый яп и там, скорее всего, меньше конкуренция. Смотрел недавно вакансии в озон, так там каждая 3-я вакансия на golang, они его почти во все продукты пихают
Выбирай сферу. От языка не зависит уровень сложности попасть на работу!!!!! Легче устроится в тех.поддержку и потом перевести супстя года в то направление, которое интересно
Привет) Все хвалят свое болото, но я бы выбирал в таком порядке по приоритетам: 1. Заходишь на hh.ru и смотришь количество вакансий по интересующим языкам. Поможет оценить востребованность языка на рынке 2. Посмотреть пару подкастов про каждый язык (АйтиБорода, Хекслет, что-нибудь ещё подобное). Помогает понять основные сферы применения, плюсы/минусы языка 3. Если позволяет время, попробовать пописать на каждом. Может понравится какой-то язык так сильно, что потом на другом писать не заставишь)
Знаешь си - пиши на си, учи си, потому как если задаешь такие вопросы - тебе еще учиться и учиться. Если можешь в си - можешь в любой другой ЯП после небольшого вхождения в его синтаксис.
Нейросети, которые называют «искусственным интеллектом», не умеют сами думать, они просто перерабатывают уже существующую информацию и строят взаимосвязи. Любую сетку нужно обучать и править ошибки. Как можно научить чему-то, если сам не разбираешься в теме? Или лучше, как можно понять, что нейросеть ошибается, если для самого тема плохо понятна?
@@kismichel17 сделать другую сеть, которая будет перепроверять информацию через интернет и свою базу знаний. Да, будет какой-то уровень ошибок, но маленький, и в любом случае достаточный для решения реальных задач и проблем
Немного оговорился, нужно было уточнить, что это так при разных битах (0 и 1). Дальше рассказываю про ситуацию с совпадающими битами, и становится понятно, что я имел ввиду. Плюс внизу есть более строгая формулировка Под другим комментарием разобрал работу оператора подробнее, персонально для вас продублирую: XOR для двух одинаковых битов дает 0. Если числа в таком массиве с 1 непарным элементом представить в двоичном виде и выполнить между ними XOR (именно эти 2 действия и делает оператор ^ + ещё обратно в десятичное число преобразует), то биты у повторяющихся чисел дадут 0. Значит, в итоге мы получаем только биты уникального числа, которые ^ вернет нам в десятичном виде
@@kismichel17 а как ты хотел? Ничего в этом мире не происходит бесследно. Это тебе так, нано-порция, возможно в меру разумной критики - тебе остается только сделать верные выводы, или просто забить болт.
Или вот ещё, не благодари,) left, right = 0, len(nums) while left < right: mid = left + (right - left) // 2 if nums[mid] == target: return mid elif nums[mid] < target: left = mid + 1 else: right = mid return left
Спасибо большое за видео. Есть вопрос, извиняюсь заранее если глупый.. я не очень понял как прийти к решению в первой задаче (которая #136 Single Number). Как работает оператор XOR в теории я понял, но почему именно он помогает нам получить правильный ответ для меня осталось загадкой. Я был бы очень благодарен чуть более подробному объяснению!
XOR для двух одинаковых битов дает 0. Если числа в таком массиве с 1 непарным элементом представить в двоичном виде и выполнить между ними XOR (именно эти 2 действия и делает оператор ^ + ещё обратно в десятичное число преобразует), то биты у повторяющихся чисел дадут 0. Значит, в итоге мы получаем только биты уникального числа, которые ^ вернет нам в десятичном виде
@@kismichel17 понял, спасибо за объяснение!
@@kismichel17 Уточните пожалуйста, а если повторяющихся значений например 3 и более?
3 ^ 3 ^ 3 = (3 ^ 3) ^ 3 = 0 ^ 3 = 3
Для четного числа повторений будем получать 0
@@kismichel17 то есть этот способ работает только для четного количества повторяющихся чисел в массиве?
Я литкодер со стажем, многу сказать, что опытный литкодер - это всегда хорошо, но значимость алгоритмов не надо завышать. Часто бывало, что от меня просто требовали знать биг О, решить вопросы уровня easy и так далее. В глубь отнюдь не стоит погружаться тем, кто не имел никогда дело с программированием и кто хочет найти первую стажировку (понятно, что все зависит от компании). Да, будет неплохо прорешать 50 вопросов, но покуда вы не идете в FAANG, то не стоит переусердствовать с тем, что вам пригодится только на интервью (хотя, безусловно, могу сказать, что эта дрянь логику развивает и ты лучше начинаешь решать проблемы в принципе). Новичку гораздо важнее учить фреймворки и писать проекты, чем решать вопросы на DFS, бинарные деревья и жадные алгоритмы. Выучите массивы, хэшмапы, стэки, поинтеры, может даже слайдинг виндоу, но поберегите свое время и на проекты, которые как по мне куда важнее будут.
Спасибо перечитаю дома еще раз переосмыслю.
Спасибо. Придется гугулить DFS. FAANG где то встречал термин
Я литкодер со стажем, но я до сих пор джун?)
Если человек нацелен на создание продукта для, условно, решение глобальных проблем, не зациклен на работе на дядю, то алгоритмы смогут помочь в этом?
Боже, какая прекрасная подача контента, жду новых видосов с нетерпением. Спасибо тебе за хорошие объяснения!
Спасибо за теплые слова 🥹🙏
Тема алгоритмов конечно крайне бесячья!) Но подача хорошая: тесты, таймкоды! Спасибо, Михаил👍👍👍
Спасибо за видео. Смотрел как ты продумываешь логику алгоритма, по ходу дела переделывал для себя на С++. Потом смотрю в комментариях, кому-то на плюсах тоже захотелось. Скинул линк на гитхаб-репозиторий, если ты не против.
Только за, спасибо)
Привет! Хорошая подача.
Для проверки дерева на сбалансированность у тебя получилась достаточно высокая сложность, глубина будет считаться множество раз на поддеревьях, которые уже были пройдены при подсчёте глубины. Можно совместить подсчёт глубины с проверкой не нарушилось ли условие, так мы закончим работу сразу если встретим несбалансированное поддерево.
Привет, это правда, спасибо, что заметил 🙏
Блин, молодой парнишка, такой спокойный, умный, красавчик в общем. Завидую по белому, хочу конечно изучить джаву, но мне уже 35 лет...всю молодость просрал на всякую дичь, доски стругал, фуры водил, потом кое как ближе к тридцатнику запрыгнул в банк, сейчас оркл sql/pl-sql, мечтаю о джаве но понимаю что ее надо было лет с 20 учить чтоб к своим 35 хотя бы как то двигаться...эхх время, не восполнимый ресурс. Всех благ тебе, достижений и побед.
Опыт в других сферах лишним не бывает, только прибавляет интереса к личности :)
Спасибо за теплый комментарий. У вас все получится, не ставьте сами себе рамки!)
а в чём такая глобальная разница? доучите и плавно переходите... вот литкоды тут да, сложно с профильными ребята соперничать
мне 44 и я учу не знаю что ты за свои 35 переживаешь.
да, старик, ты очень стар. в принципе можешь уже больше ничего не делать. в таком возрасте поздно
Все возможно! Я в 31 переехал в Канаду и тут за три года сам выучился и нашел работу программистом. Пока работаю три года по большей части на frontend в Angular, но тоже вот пару месяцев назад начал учить алгоритмы и JAVA.
Сейчас шрифт вообще кайф! Спасибо
Ты не влюбишься в алгоритмы, ты их возненавидишь! И да, это сложно, местами непонятно и многим не нужно
От любви до ненависти, как говорится)
Очень крутой контент, спасибо!
База. Решение с xor - весьма элегантно, но будет работать только в случае, если в массиве есть числа дубликаты в парах и одно, которое без пары.
Все задачки уровня easy. Было бы интересно посмотреть на более сложные. Думаю на собесе такое если и дадут, то только на разогрев. В большинстве случаев дают уровня "медиум"
По моему опыту чаще дают как раз easy уровень, если это не собесы в Яндекс и Тинькофф иногда
Но я услышал)
Спасибо, Михаил! Продолжайте
Благодарю 🙏
Посмотрел с удовольствием! Спасибо!
Значит, снималось не зря)
Привет, интересное видео, хотим еще разбор задач с лидкода
Привет, принято) 🫡
Крутое видео, давай ещё больше видео по leetcode
Спасибо! Если бы еще алгоритмы на питоне были бы, то было бы просто отлично! 😊
Кстати да, самый универсальный и удобный язык для алгоритмов, и в целом спортивного программирования - это C++ :)
Замечательно. Успехов.
🙏
leetcode это больше о натаскаться на паттерны решения определенных типов задачек. По моему не самый удачный ресурс чтобы влюбиться в алгоритмы. Например книги где алгоритмы применяются к проблемам реального мира более располагают любить алгоритмы. Имхо, на литкоде много "синтетических" задач цель которых - спросить на собеседовании и отобрать тех кто решил ее быстрее других, не думаю что в faang (и толпы компаний им подражающие) наняли тех что не решил задачки, но очень "красиво" думал над их решением.
Для меня тоже сомнительная идея давать алгоритмические задачи с подобных сайтов на собесах
Но надо отдать должное, LeetCode неплохо учит подбирать оптимальные структуры данных. После него на код смотришь уже по-другому
@@kismichel17 Да, согласен.
Спасибо за видео
Как раз недавно тоже начал решать литкод, правда пока не очень хорошо получается ) В универе был курс по алгосам но уже все забыл
Надеюсь, видео послужит неплохим стартом 💪
Уже лет 10 программирую. Никогда не любил подобные алгозадачи: они бессмысленны и отвлекают от общего дизайна приложения. Ещё их очень сложно читать и отлаживать - а код мы всё же чаще читаем, чем пишем. Если есть возможность это "спрятать" или переложить на стандартную библиотеку, то лучше так и поступить.
В любом случае, спасибо автору за хороший материал.
Интересно,что на литкоде в решении указывается явно garbage collector))
Не думал что прищавый парень доставит больше эстетического и визуального кайфа, чем от полуголой девушки из тик тока 😅😂
Комплимент сомнительный, но окэй
Михаил, а Вы не могли бы объяснить поподробнее, почему в данном случае GC вызывает такую реакцию в стиле «без комментариев»? Я новичок и не понимаю, почему это плохая идея. Единственное объяснение, которое я могу предположить, это то, что авторы решений, где использован GC таким условно «читерским» способом, хотели показать, что их решение более оптимально по использованию памяти на LeetCode. Но, в сущности, чем плохо использование GC в этих примерах?
Пытаться вызвать GC в коде - плохая идея. Этот механизм придумывался для автоматизации сборки мусора. Можно настраивать параметры GC, но вмешиваться в его работу не нужно. Кроме того, сам по себе вызов метода System.gc() не гарантирует начало сборки мусора
Авторы таких решений повышают рейтинг не более оптимальными способами решения задачи, а за счет использования особенностей платформы, это и правда читерство)
@@kismichel17 Понял. Спасибо)
Здравствуй, а какой у вас коммерческий опыт разработки 👀?
4 года
Да уж. До ксора на собеседовании я бы точно додумался. Вообще как до этого можно додуматься? Это просто надо знать. И скорее всего какой-нибудь школотрон, изучающий паскаль знает это лучше, чем я.
Согласен, но все, что мы знаем - это тоже информация, которую когда-то запомнил наш мозг
Почему бы между изучением языков/фреймворков не уделить время дискретной математике и теории чисел?)
Круто!💥💥💥
1 0 1 мой друг, у меня такой вопрос, коммерческого опыта нет, знаю C, изучаю постоянно Computer Science. Хочу в backend, выбираю между Java, Golang что посоветуешь, чтобы легче было устроиться на работу?
Golang относительно новый яп и там, скорее всего, меньше конкуренция. Смотрел недавно вакансии в озон, так там каждая 3-я вакансия на golang, они его почти во все продукты пихают
Выбирай сферу. От языка не зависит уровень сложности попасть на работу!!!!! Легче устроится в тех.поддержку и потом перевести супстя года в то направление, которое интересно
Привет) Все хвалят свое болото, но я бы выбирал в таком порядке по приоритетам:
1. Заходишь на hh.ru и смотришь количество вакансий по интересующим языкам. Поможет оценить востребованность языка на рынке
2. Посмотреть пару подкастов про каждый язык (АйтиБорода, Хекслет, что-нибудь ещё подобное). Помогает понять основные сферы применения, плюсы/минусы языка
3. Если позволяет время, попробовать пописать на каждом. Может понравится какой-то язык так сильно, что потом на другом писать не заставишь)
Знаешь си - пиши на си, учи си, потому как если задаешь такие вопросы - тебе еще учиться и учиться. Если можешь в си - можешь в любой другой ЯП после небольшого вхождения в его синтаксис.
Подскажи, что за шрифт у тебя?)
Если имеешь ввиду шрифт IDEA, то стандартный от JetBrains
Тема plugins.jetbrains.com/plugin/15727-xcode-theme
@@kismichel17 Спасибо!)
Все хорошо один вопрос как писать тесты(((. Как понимать что писать?
Ох, тема для отдельного видео, записал себе)
Бро что за программа для записи видео?
apps.apple.com/ru/app/taprecord-%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D1%8C-%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0/id1624223891?mt=12
@@kismichel17 спасибо
Какой у тебя МакБук?
M1 Pro 2021 14”
Как с тобой связаться?
В описании канала есть тг
t.me/Kismichel
Бро скажи какая тема у тебя плиз?
plugins.jetbrains.com/plugin/15727-xcode-theme
напиши пож что за гарнитура
www.mvideo.ru/products/igrovye-naushniki-logitech-g-pro-x-50175524
Стасян - такой себе пример для подражания.
От него у меня только вступительная фраза)
Если есть хорошие предложения, на что можно заменить, с радостью поменяю)
Можно с тобой дополнительно позаниматся?
Привет) Я занимаюсь менторством, но алгоритмы не затрагиваю, если что)
Можешь написать мне в личку, ссылка на тг в описании канала
бро пожертвуй деньги в приюты если ты не способен сам обучаться. всё равно отсутствие этого перка тебе не даст работу
@@zxcghoul8837 какой ты тупой, это ужас
Зачем нужны алгоритмы, если все эти задачи с лихвой покрываются и автоматизируются искусственным интеллектом?
Нейросети, которые называют «искусственным интеллектом», не умеют сами думать, они просто перерабатывают уже существующую информацию и строят взаимосвязи.
Любую сетку нужно обучать и править ошибки. Как можно научить чему-то, если сам не разбираешься в теме? Или лучше, как можно понять, что нейросеть ошибается, если для самого тема плохо понятна?
@@kismichel17 сделать другую сеть, которая будет перепроверять информацию через интернет и свою базу знаний. Да, будет какой-то уровень ошибок, но маленький, и в любом случае достаточный для решения реальных задач и проблем
Не влюблюсь, потому что алгоритмы не дают мне пройти собеседования
Не можешь победить - возглавь (влюбись) 😁
Забавно как чел, сам еще толком ничего не знающий и жующий хлеб, учит других.
Ничего не понял, ушел жевать хлеб
Фред, неужто ты?
@@kismichel17 с тебя следующее видео, в котором ты рассказываешь о том, как ты применяешь описываемые алгоритмы в продакшне с примерами.
Что значит 1 0 1? Какое-то интернет приветствие?
Рандомная фраза для приветствия, без потайных смыслов)
У нас есть два битА, применяем к ним XOR и получаем УНИКАЛЬНЫЙ, ОТЛИЧНЫЙ ОТ НУЛЯ(кого??) Что ты несешь то вообще такое?
Немного оговорился, нужно было уточнить, что это так при разных битах (0 и 1). Дальше рассказываю про ситуацию с совпадающими битами, и становится понятно, что я имел ввиду. Плюс внизу есть более строгая формулировка
Под другим комментарием разобрал работу оператора подробнее, персонально для вас продублирую:
XOR для двух одинаковых битов дает 0. Если числа в таком массиве с 1 непарным элементом представить в двоичном виде и выполнить между ними XOR (именно эти 2 действия и делает оператор ^ + ещё обратно в десятичное число преобразует), то биты у повторяющихся чисел дадут 0. Значит, в итоге мы получаем только биты уникального числа, которые ^ вернет нам в десятичном виде
А вообще, если так не нравится видео, зачем второй день его смотреть и писать гневные комментарии?)
@@kismichel17 а как ты хотел? Ничего в этом мире не происходит бесследно. Это тебе так, нано-порция, возможно в меру разумной критики - тебе остается только сделать верные выводы, или просто забить болт.
После «101 ютуб» желание смотреть пропало
ну так не смотри)
Вроде и не заставляют, смело шагай дальше :)
Там «101, друзья»)
После 101 желание смотреть наоборот появилось
Тебе уже шизится Стас, лечись, там же чел сказал 101, друзья
Полезное видео! Но есть одна ошибка: правильно не Java a JavaScript. Не благодари
При чем тут вообще JS, дядя?
Точняк)
Кликбейт(
currNode = head
while currNode:
nextNode = currNode.next
while nextNode and currNode.val == nextNode.val:
nextNode = nextNode.next
currNode.next = nextNode
currNode = nextNode
return head
Изящнее? да)
Или вот ещё, не благодари,)
left, right = 0, len(nums)
while left < right:
mid = left + (right - left) // 2
if nums[mid] == target:
return mid
elif nums[mid] < target:
left = mid + 1
else:
right = mid
return left
И спасибо за контент, 1 задачу решил не через XOR до тебя =)
Алгоритмы? Круто, но как насчёт пойти помыться?
После таких комментариев и правда хочется помыться
@@kismichel17 так мойся, ботан, ха
Ты чо смысловой дофига
Михаил, добрый день. Есть плагин для идеи очень удобно.
Добрый) Не очень понял, вы про мои плагины спрашиваете или хотите своим поделиться?)
@@kismichel17 извините сразу не сказал! Хочу поделиться своим, плагин лееткод называется)
@@kismichel17есть плагин литкода
@@kismichel17есть плагин литкода для идеи
Ссылку в студию) Интересно)