LeetCode. Ты влюбишься в алгоритмы

Поделиться
HTML-код
  • Опубликовано: 8 ноя 2024

Комментарии • 138

  • @МихаилЧудаков-с6и
    @МихаилЧудаков-с6и 8 месяцев назад +4

    Спасибо большое за видео. Есть вопрос, извиняюсь заранее если глупый.. я не очень понял как прийти к решению в первой задаче (которая #136 Single Number). Как работает оператор XOR в теории я понял, но почему именно он помогает нам получить правильный ответ для меня осталось загадкой. Я был бы очень благодарен чуть более подробному объяснению!

    • @kismichel17
      @kismichel17  8 месяцев назад +4

      XOR для двух одинаковых битов дает 0. Если числа в таком массиве с 1 непарным элементом представить в двоичном виде и выполнить между ними XOR (именно эти 2 действия и делает оператор ^ + ещё обратно в десятичное число преобразует), то биты у повторяющихся чисел дадут 0. Значит, в итоге мы получаем только биты уникального числа, которые ^ вернет нам в десятичном виде

    • @МихаилЧудаков-с6и
      @МихаилЧудаков-с6и 8 месяцев назад +2

      @@kismichel17 понял, спасибо за объяснение!

    • @amzi-x
      @amzi-x 8 месяцев назад

      @@kismichel17 Уточните пожалуйста, а если повторяющихся значений например 3 и более?

    • @kismichel17
      @kismichel17  8 месяцев назад +1

      3 ^ 3 ^ 3 = (3 ^ 3) ^ 3 = 0 ^ 3 = 3
      Для четного числа повторений будем получать 0

    • @CantPickTheNameIwant
      @CantPickTheNameIwant 28 дней назад

      @@kismichel17 то есть этот способ работает только для четного количества повторяющихся чисел в массиве?

  • @Ivan-g2u3u
    @Ivan-g2u3u 8 месяцев назад +45

    Я литкодер со стажем, многу сказать, что опытный литкодер - это всегда хорошо, но значимость алгоритмов не надо завышать. Часто бывало, что от меня просто требовали знать биг О, решить вопросы уровня easy и так далее. В глубь отнюдь не стоит погружаться тем, кто не имел никогда дело с программированием и кто хочет найти первую стажировку (понятно, что все зависит от компании). Да, будет неплохо прорешать 50 вопросов, но покуда вы не идете в FAANG, то не стоит переусердствовать с тем, что вам пригодится только на интервью (хотя, безусловно, могу сказать, что эта дрянь логику развивает и ты лучше начинаешь решать проблемы в принципе). Новичку гораздо важнее учить фреймворки и писать проекты, чем решать вопросы на DFS, бинарные деревья и жадные алгоритмы. Выучите массивы, хэшмапы, стэки, поинтеры, может даже слайдинг виндоу, но поберегите свое время и на проекты, которые как по мне куда важнее будут.

    • @MikhailBezhaneishvili
      @MikhailBezhaneishvili 8 месяцев назад

      Спасибо перечитаю дома еще раз переосмыслю.

    • @MikhailBezhaneishvili
      @MikhailBezhaneishvili 8 месяцев назад

      Спасибо. Придется гугулить DFS. FAANG где то встречал термин

    • @hvac_vdk
      @hvac_vdk 8 месяцев назад +1

      Я литкодер со стажем, но я до сих пор джун?)

    • @CantPickTheNameIwant
      @CantPickTheNameIwant 28 дней назад

      Если человек нацелен на создание продукта для, условно, решение глобальных проблем, не зациклен на работе на дядю, то алгоритмы смогут помочь в этом?

  • @wolroys
    @wolroys 8 месяцев назад

    Боже, какая прекрасная подача контента, жду новых видосов с нетерпением. Спасибо тебе за хорошие объяснения!

    • @kismichel17
      @kismichel17  8 месяцев назад

      Спасибо за теплые слова 🥹🙏

  • @МаксМакс-ч8к
    @МаксМакс-ч8к 8 месяцев назад +2

    Тема алгоритмов конечно крайне бесячья!) Но подача хорошая: тесты, таймкоды! Спасибо, Михаил👍👍👍

  • @dino_source
    @dino_source 8 месяцев назад

    Спасибо за видео. Смотрел как ты продумываешь логику алгоритма, по ходу дела переделывал для себя на С++. Потом смотрю в комментариях, кому-то на плюсах тоже захотелось. Скинул линк на гитхаб-репозиторий, если ты не против.

    • @kismichel17
      @kismichel17  8 месяцев назад +1

      Только за, спасибо)

  • @lucidsght
    @lucidsght 8 месяцев назад

    Привет! Хорошая подача.
    Для проверки дерева на сбалансированность у тебя получилась достаточно высокая сложность, глубина будет считаться множество раз на поддеревьях, которые уже были пройдены при подсчёте глубины. Можно совместить подсчёт глубины с проверкой не нарушилось ли условие, так мы закончим работу сразу если встретим несбалансированное поддерево.

    • @kismichel17
      @kismichel17  8 месяцев назад +1

      Привет, это правда, спасибо, что заметил 🙏

  • @damiensalgado5178
    @damiensalgado5178 8 месяцев назад +6

    Блин, молодой парнишка, такой спокойный, умный, красавчик в общем. Завидую по белому, хочу конечно изучить джаву, но мне уже 35 лет...всю молодость просрал на всякую дичь, доски стругал, фуры водил, потом кое как ближе к тридцатнику запрыгнул в банк, сейчас оркл sql/pl-sql, мечтаю о джаве но понимаю что ее надо было лет с 20 учить чтоб к своим 35 хотя бы как то двигаться...эхх время, не восполнимый ресурс. Всех благ тебе, достижений и побед.

    • @kismichel17
      @kismichel17  8 месяцев назад +7

      Опыт в других сферах лишним не бывает, только прибавляет интереса к личности :)
      Спасибо за теплый комментарий. У вас все получится, не ставьте сами себе рамки!)

    • @ВиталийГудзь-г4ъ
      @ВиталийГудзь-г4ъ 8 месяцев назад

      а в чём такая глобальная разница? доучите и плавно переходите... вот литкоды тут да, сложно с профильными ребята соперничать

    • @MikhailBezhaneishvili
      @MikhailBezhaneishvili 8 месяцев назад +12

      мне 44 и я учу не знаю что ты за свои 35 переживаешь.

    • @alexchto
      @alexchto 8 месяцев назад +1

      да, старик, ты очень стар. в принципе можешь уже больше ничего не делать. в таком возрасте поздно

    • @dmitrypolyakov5708
      @dmitrypolyakov5708 8 месяцев назад +1

      Все возможно! Я в 31 переехал в Канаду и тут за три года сам выучился и нашел работу программистом. Пока работаю три года по большей части на frontend в Angular, но тоже вот пару месяцев назад начал учить алгоритмы и JAVA.

  • @GermanBoldyrev
    @GermanBoldyrev 8 месяцев назад +2

    Сейчас шрифт вообще кайф! Спасибо

  • @RUMACTEP
    @RUMACTEP 8 месяцев назад +1

    Ты не влюбишься в алгоритмы, ты их возненавидишь! И да, это сложно, местами непонятно и многим не нужно

    • @kismichel17
      @kismichel17  8 месяцев назад +1

      От любви до ненависти, как говорится)

  • @minik2265
    @minik2265 8 месяцев назад

    Очень крутой контент, спасибо!

  • @mainframe9374
    @mainframe9374 8 месяцев назад +1

    База. Решение с xor - весьма элегантно, но будет работать только в случае, если в массиве есть числа дубликаты в парах и одно, которое без пары.
    Все задачки уровня easy. Было бы интересно посмотреть на более сложные. Думаю на собесе такое если и дадут, то только на разогрев. В большинстве случаев дают уровня "медиум"

    • @kismichel17
      @kismichel17  8 месяцев назад +3

      По моему опыту чаще дают как раз easy уровень, если это не собесы в Яндекс и Тинькофф иногда

    • @kismichel17
      @kismichel17  8 месяцев назад +2

      Но я услышал)

  • @alexeim
    @alexeim 8 месяцев назад

    Спасибо, Михаил! Продолжайте

    • @kismichel17
      @kismichel17  8 месяцев назад

      Благодарю 🙏

  • @wildjoe6259
    @wildjoe6259 8 месяцев назад

    Посмотрел с удовольствием! Спасибо!

    • @kismichel17
      @kismichel17  8 месяцев назад

      Значит, снималось не зря)

  • @АйдарИльясов-т3ы
    @АйдарИльясов-т3ы 8 месяцев назад +2

    Привет, интересное видео, хотим еще разбор задач с лидкода

    • @kismichel17
      @kismichel17  8 месяцев назад +1

      Привет, принято) 🫡

  • @AntonEdelman
    @AntonEdelman 8 месяцев назад

    Крутое видео, давай ещё больше видео по leetcode

  • @galinaorlova4236
    @galinaorlova4236 8 месяцев назад +1

    Спасибо! Если бы еще алгоритмы на питоне были бы, то было бы просто отлично! 😊

    • @knodesec
      @knodesec 8 месяцев назад

      Кстати да, самый универсальный и удобный язык для алгоритмов, и в целом спортивного программирования - это C++ :)

  • @АрабовМуллошараф
    @АрабовМуллошараф 8 месяцев назад +1

    Замечательно. Успехов.

  • @andreypopov6166
    @andreypopov6166 8 месяцев назад

    leetcode это больше о натаскаться на паттерны решения определенных типов задачек. По моему не самый удачный ресурс чтобы влюбиться в алгоритмы. Например книги где алгоритмы применяются к проблемам реального мира более располагают любить алгоритмы. Имхо, на литкоде много "синтетических" задач цель которых - спросить на собеседовании и отобрать тех кто решил ее быстрее других, не думаю что в faang (и толпы компаний им подражающие) наняли тех что не решил задачки, но очень "красиво" думал над их решением.

    • @kismichel17
      @kismichel17  8 месяцев назад +1

      Для меня тоже сомнительная идея давать алгоритмические задачи с подобных сайтов на собесах
      Но надо отдать должное, LeetCode неплохо учит подбирать оптимальные структуры данных. После него на код смотришь уже по-другому

    • @andreypopov6166
      @andreypopov6166 8 месяцев назад

      @@kismichel17 Да, согласен.

  • @eduardklygunov1412
    @eduardklygunov1412 8 месяцев назад

    Спасибо за видео
    Как раз недавно тоже начал решать литкод, правда пока не очень хорошо получается ) В универе был курс по алгосам но уже все забыл

    • @kismichel17
      @kismichel17  8 месяцев назад

      Надеюсь, видео послужит неплохим стартом 💪

  • @wladdovy4370
    @wladdovy4370 8 месяцев назад +3

    Уже лет 10 программирую. Никогда не любил подобные алгозадачи: они бессмысленны и отвлекают от общего дизайна приложения. Ещё их очень сложно читать и отлаживать - а код мы всё же чаще читаем, чем пишем. Если есть возможность это "спрятать" или переложить на стандартную библиотеку, то лучше так и поступить.
    В любом случае, спасибо автору за хороший материал.

  • @ainurrn
    @ainurrn 8 месяцев назад +1

    Интересно,что на литкоде в решении указывается явно garbage collector))

  • @АртемОсипов-ж1ъ
    @АртемОсипов-ж1ъ 8 месяцев назад

    Не думал что прищавый парень доставит больше эстетического и визуального кайфа, чем от полуголой девушки из тик тока 😅😂

    • @kismichel17
      @kismichel17  8 месяцев назад +2

      Комплимент сомнительный, но окэй

  • @Jahnt
    @Jahnt 8 месяцев назад

    Михаил, а Вы не могли бы объяснить поподробнее, почему в данном случае GC вызывает такую реакцию в стиле «без комментариев»? Я новичок и не понимаю, почему это плохая идея. Единственное объяснение, которое я могу предположить, это то, что авторы решений, где использован GC таким условно «читерским» способом, хотели показать, что их решение более оптимально по использованию памяти на LeetCode. Но, в сущности, чем плохо использование GC в этих примерах?

    • @kismichel17
      @kismichel17  8 месяцев назад +1

      Пытаться вызвать GC в коде - плохая идея. Этот механизм придумывался для автоматизации сборки мусора. Можно настраивать параметры GC, но вмешиваться в его работу не нужно. Кроме того, сам по себе вызов метода System.gc() не гарантирует начало сборки мусора
      Авторы таких решений повышают рейтинг не более оптимальными способами решения задачи, а за счет использования особенностей платформы, это и правда читерство)

    • @Jahnt
      @Jahnt 8 месяцев назад

      @@kismichel17 Понял. Спасибо)

  • @floydmayweather6934
    @floydmayweather6934 8 месяцев назад

    Здравствуй, а какой у вас коммерческий опыт разработки 👀?

  • @ipasenko
    @ipasenko 8 месяцев назад +1

    Да уж. До ксора на собеседовании я бы точно додумался. Вообще как до этого можно додуматься? Это просто надо знать. И скорее всего какой-нибудь школотрон, изучающий паскаль знает это лучше, чем я.

    • @kismichel17
      @kismichel17  8 месяцев назад +1

      Согласен, но все, что мы знаем - это тоже информация, которую когда-то запомнил наш мозг
      Почему бы между изучением языков/фреймворков не уделить время дискретной математике и теории чисел?)

  • @anton1evdokimov
    @anton1evdokimov 8 месяцев назад

    Круто!💥💥💥

  • @qrthack
    @qrthack 8 месяцев назад

    1 0 1 мой друг, у меня такой вопрос, коммерческого опыта нет, знаю C, изучаю постоянно Computer Science. Хочу в backend, выбираю между Java, Golang что посоветуешь, чтобы легче было устроиться на работу?

    • @romAYAYANI
      @romAYAYANI 8 месяцев назад

      Golang относительно новый яп и там, скорее всего, меньше конкуренция. Смотрел недавно вакансии в озон, так там каждая 3-я вакансия на golang, они его почти во все продукты пихают

    • @ViktorAr2023
      @ViktorAr2023 8 месяцев назад

      Выбирай сферу. От языка не зависит уровень сложности попасть на работу!!!!! Легче устроится в тех.поддержку и потом перевести супстя года в то направление, которое интересно

    • @kismichel17
      @kismichel17  8 месяцев назад +1

      Привет) Все хвалят свое болото, но я бы выбирал в таком порядке по приоритетам:
      1. Заходишь на hh.ru и смотришь количество вакансий по интересующим языкам. Поможет оценить востребованность языка на рынке
      2. Посмотреть пару подкастов про каждый язык (АйтиБорода, Хекслет, что-нибудь ещё подобное). Помогает понять основные сферы применения, плюсы/минусы языка
      3. Если позволяет время, попробовать пописать на каждом. Может понравится какой-то язык так сильно, что потом на другом писать не заставишь)

    • @hvac_vdk
      @hvac_vdk 8 месяцев назад

      Знаешь си - пиши на си, учи си, потому как если задаешь такие вопросы - тебе еще учиться и учиться. Если можешь в си - можешь в любой другой ЯП после небольшого вхождения в его синтаксис.

  • @dmitryNaumov.
    @dmitryNaumov. 8 месяцев назад

    Подскажи, что за шрифт у тебя?)

    • @kismichel17
      @kismichel17  8 месяцев назад +1

      Если имеешь ввиду шрифт IDEA, то стандартный от JetBrains
      Тема plugins.jetbrains.com/plugin/15727-xcode-theme

    • @dmitryNaumov.
      @dmitryNaumov. 8 месяцев назад

      @@kismichel17 Спасибо!)

  • @MikhailBezhaneishvili
    @MikhailBezhaneishvili 8 месяцев назад +1

    Все хорошо один вопрос как писать тесты(((. Как понимать что писать?

    • @kismichel17
      @kismichel17  8 месяцев назад +2

      Ох, тема для отдельного видео, записал себе)

  • @playtopgames3261
    @playtopgames3261 8 месяцев назад

    Бро что за программа для записи видео?

    • @kismichel17
      @kismichel17  8 месяцев назад +1

      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

    • @playtopgames3261
      @playtopgames3261 8 месяцев назад

      @@kismichel17 спасибо

  • @hjklzpg
    @hjklzpg 8 месяцев назад

    Какой у тебя МакБук?

  • @shamilsalikhov8749
    @shamilsalikhov8749 8 месяцев назад

    Как с тобой связаться?

    • @kismichel17
      @kismichel17  8 месяцев назад

      В описании канала есть тг
      t.me/Kismichel

  • @a7kerkh
    @a7kerkh 8 месяцев назад

    Бро скажи какая тема у тебя плиз?

    • @kismichel17
      @kismichel17  8 месяцев назад

      plugins.jetbrains.com/plugin/15727-xcode-theme

  • @VladimirPlaksa
    @VladimirPlaksa 8 месяцев назад

    напиши пож что за гарнитура

    • @kismichel17
      @kismichel17  8 месяцев назад

      www.mvideo.ru/products/igrovye-naushniki-logitech-g-pro-x-50175524

  • @WounderVaflel
    @WounderVaflel 8 месяцев назад +1

    Стасян - такой себе пример для подражания.

    • @kismichel17
      @kismichel17  8 месяцев назад

      От него у меня только вступительная фраза)
      Если есть хорошие предложения, на что можно заменить, с радостью поменяю)

  • @ANDREYQIWS
    @ANDREYQIWS 8 месяцев назад

    Можно с тобой дополнительно позаниматся?

    • @kismichel17
      @kismichel17  8 месяцев назад

      Привет) Я занимаюсь менторством, но алгоритмы не затрагиваю, если что)
      Можешь написать мне в личку, ссылка на тг в описании канала

    • @zxcghoul8837
      @zxcghoul8837 8 месяцев назад +1

      бро пожертвуй деньги в приюты если ты не способен сам обучаться. всё равно отсутствие этого перка тебе не даст работу

    • @ANDREYQIWS
      @ANDREYQIWS 8 месяцев назад

      @@zxcghoul8837 какой ты тупой, это ужас

  • @mndtr0
    @mndtr0 7 месяцев назад

    Зачем нужны алгоритмы, если все эти задачи с лихвой покрываются и автоматизируются искусственным интеллектом?

    • @kismichel17
      @kismichel17  7 месяцев назад +2

      Нейросети, которые называют «искусственным интеллектом», не умеют сами думать, они просто перерабатывают уже существующую информацию и строят взаимосвязи.
      Любую сетку нужно обучать и править ошибки. Как можно научить чему-то, если сам не разбираешься в теме? Или лучше, как можно понять, что нейросеть ошибается, если для самого тема плохо понятна?

    • @mndtr0
      @mndtr0 7 месяцев назад

      @@kismichel17 сделать другую сеть, которая будет перепроверять информацию через интернет и свою базу знаний. Да, будет какой-то уровень ошибок, но маленький, и в любом случае достаточный для решения реальных задач и проблем

  • @UserSo4reUsu75ry
    @UserSo4reUsu75ry 8 месяцев назад

    Не влюблюсь, потому что алгоритмы не дают мне пройти собеседования

    • @kismichel17
      @kismichel17  8 месяцев назад

      Не можешь победить - возглавь (влюбись) 😁

  • @bootstrapers
    @bootstrapers 8 месяцев назад +1

    Забавно как чел, сам еще толком ничего не знающий и жующий хлеб, учит других.

    • @kismichel17
      @kismichel17  8 месяцев назад +1

      Ничего не понял, ушел жевать хлеб

    • @crackinglad7644
      @crackinglad7644 8 месяцев назад +1

      Фред, неужто ты?

    • @bootstrapers
      @bootstrapers 8 месяцев назад

      @@kismichel17 с тебя следующее видео, в котором ты рассказываешь о том, как ты применяешь описываемые алгоритмы в продакшне с примерами.

  • @Kiyanti
    @Kiyanti 8 месяцев назад

    Что значит 1 0 1? Какое-то интернет приветствие?

    • @kismichel17
      @kismichel17  8 месяцев назад +1

      Рандомная фраза для приветствия, без потайных смыслов)

  • @bootstrapers
    @bootstrapers 8 месяцев назад +1

    У нас есть два битА, применяем к ним XOR и получаем УНИКАЛЬНЫЙ, ОТЛИЧНЫЙ ОТ НУЛЯ(кого??) Что ты несешь то вообще такое?

    • @kismichel17
      @kismichel17  8 месяцев назад

      Немного оговорился, нужно было уточнить, что это так при разных битах (0 и 1). Дальше рассказываю про ситуацию с совпадающими битами, и становится понятно, что я имел ввиду. Плюс внизу есть более строгая формулировка
      Под другим комментарием разобрал работу оператора подробнее, персонально для вас продублирую:
      XOR для двух одинаковых битов дает 0. Если числа в таком массиве с 1 непарным элементом представить в двоичном виде и выполнить между ними XOR (именно эти 2 действия и делает оператор ^ + ещё обратно в десятичное число преобразует), то биты у повторяющихся чисел дадут 0. Значит, в итоге мы получаем только биты уникального числа, которые ^ вернет нам в десятичном виде

    • @kismichel17
      @kismichel17  8 месяцев назад +1

      А вообще, если так не нравится видео, зачем второй день его смотреть и писать гневные комментарии?)

    • @bootstrapers
      @bootstrapers 8 месяцев назад

      @@kismichel17 а как ты хотел? Ничего в этом мире не происходит бесследно. Это тебе так, нано-порция, возможно в меру разумной критики - тебе остается только сделать верные выводы, или просто забить болт.

  • @Disorrder
    @Disorrder 8 месяцев назад +21

    После «101 ютуб» желание смотреть пропало

    • @nazargavrilov873
      @nazargavrilov873 8 месяцев назад +3

      ну так не смотри)

    • @instaff215
      @instaff215 8 месяцев назад +3

      Вроде и не заставляют, смело шагай дальше :)

    • @kismichel17
      @kismichel17  8 месяцев назад +2

      Там «101, друзья»)

    • @АрсенийСазонов-р8з
      @АрсенийСазонов-р8з 8 месяцев назад +7

      После 101 желание смотреть наоборот появилось

    • @edxnull3448
      @edxnull3448 8 месяцев назад +4

      Тебе уже шизится Стас, лечись, там же чел сказал 101, друзья

  • @igor-volchenok
    @igor-volchenok 8 месяцев назад

    Полезное видео! Но есть одна ошибка: правильно не Java a JavaScript. Не благодари

    • @serser5433
      @serser5433 8 месяцев назад

      При чем тут вообще JS, дядя?

    • @kismichel17
      @kismichel17  8 месяцев назад

      Точняк)

  • @quadrant6912
    @quadrant6912 Месяц назад

    Кликбейт(

  • @yhooi
    @yhooi 5 месяцев назад +1

    currNode = head
    while currNode:
    nextNode = currNode.next
    while nextNode and currNode.val == nextNode.val:
    nextNode = nextNode.next
    currNode.next = nextNode
    currNode = nextNode
    return head
    Изящнее? да)

    • @yhooi
      @yhooi 5 месяцев назад +1

      Или вот ещё, не благодари,)
      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

    • @yhooi
      @yhooi 5 месяцев назад

      И спасибо за контент, 1 задачу решил не через XOR до тебя =)

  • @Zaker-o3c
    @Zaker-o3c 8 месяцев назад

    Алгоритмы? Круто, но как насчёт пойти помыться?

    • @kismichel17
      @kismichel17  8 месяцев назад

      После таких комментариев и правда хочется помыться

    • @Zaker-o3c
      @Zaker-o3c 8 месяцев назад

      @@kismichel17 так мойся, ботан, ха

    • @Zaker-o3c
      @Zaker-o3c 8 месяцев назад

      Ты чо смысловой дофига

  • @TheIvanix
    @TheIvanix 8 месяцев назад

    Михаил, добрый день. Есть плагин для идеи очень удобно.

    • @kismichel17
      @kismichel17  8 месяцев назад

      Добрый) Не очень понял, вы про мои плагины спрашиваете или хотите своим поделиться?)

    • @TheIvanix
      @TheIvanix 8 месяцев назад

      @@kismichel17 извините сразу не сказал! Хочу поделиться своим, плагин лееткод называется)

    • @nitrolacs
      @nitrolacs 8 месяцев назад

      @@kismichel17есть плагин литкода

    • @nitrolacs
      @nitrolacs 8 месяцев назад

      @@kismichel17есть плагин литкода для идеи

    • @kismichel17
      @kismichel17  8 месяцев назад

      Ссылку в студию) Интересно)