75 задач от литкод просто начните решать, у них там своя программа есть(так и называется 75 leetcode), там все темы от массивов, стрингов до динамического программирования
385 задач на литкоде. Для меня решение литкода это просто приятное и интересное занятие, где ты бросаешь вызов какой-то очередной сложной задаче, проверяешь свои силы Решал задачи я с перерывами, сначала 2 месяца каждый день, потом 2 месяца перерыв из-за нехватки времени, потом снова 30 дней подряд и т.д. И я заметил, что моя производительность в выполнении задач на работе/в унике падает, если я перестаю решать литкод. Больше времени уделяешь на банальное осознание сложных тасок, тупишь иногда и тд. А потом, когда снова пробуешь решить задачи, решенные тобой ранее, они могут вызвать затруднение (очевидно, тут про нетривиальные медум-хард задачи, которые не помнишь). Я бы назвал это интеллектуальным тонусом. Да, ты все так же знаешь, понимаешь все эти структуры данных, всякие базовые вещи пишешь с закрытыми глазами, легко балансируешь деревья и тп, но алгоритмическая чуйка, умение посмотреть на задачу с нескольких альтернативных сторон и навык быстро найти правильный подход, на мой взгляд, - вопрос тренировки. И без постоянной практики эти навыки медленно улетучиваются ( И, если подводить черту, мне кажется, что понимание ТиСД + паттернов проектирования необходимо, чтобы писать адекватно вещи, которые чуть сложнее банальных крудов без какой-либо логики. Кто-то будет городить костыли, кто-то писать неэффективный код (так как не видит иного подхода), а кто-то сделает это чисто и красиво.
Почитал Грокаем Алгоритмы, прорешал несколько десятков задач на кодварсе(литкод меньше нравится) думая что это поможет мне в разработке и кодинге, в итоге спустя 4 месяца уже забыл все, потому что ни разу не доводилось применить хоть что-то оттуда. Все поиски и структуры данных уже реализованы, знай только в чем их отличие и используй по необходимости.
смысл не в реализации, а чтобы понять когда какую из структур лучше использовать. Задачки и прокачивают это, потому что в хороших задачах никто и не запрещает пользоваться всеми заранее реализованными структурами.
Абсолютно верно, для коммерческой разработки это бесполезная вещь, все уже давно это поняли, а товарищи из фаанга так же давно признались , что алгоритмическая секция была введена просто как еще один этап отсева, из за большого потока желающих, и она вообще никак не показывает скил разраба в коммерческой разработке
" в итоге спустя 4 месяца уже забыл все" - но Вы уже наработали связи между нейронами, и возможно именно эти связи Вам позволят решить\получить\преодолеть задачи и в другой области Вашей жизни.
0:34 ну кстати это не самый правильный вариант бинпоиска и невсемипринятая практика. Более верным является брать left и rig, чтобы они были меньше и больше ответа на единицу. Тогла условие while надо переписать r - l > 1, а от одного if можно избавиться. Код станет короче, а при переходе от случая к случаю будет меняться меньше. Источник: лекция Павла Марвина про Бинпоиск
Прям с языка снял, мой личный плачевный пример, на прошлой неделе проходил 3 тех интервью с разницей в один день каждое, готовил теорию, от переменных до особенностей роботы Кубика и Кафки ... и во всех 3 случаях идеально прошел теоретическую часть и завалил практику. Как не трудно догадаться практика те самые задачки с Литкода и КодВорс среднего уровня, при чем задачки я худо бедно решал, но когда просили улучшить, упростить, уменьшить ... просто впадал в ступор. Как результат сижу на КодВорс (имхо удобнее Литкода) и решаю задачки по 2-3 в день. Так что да какой бы синьйор не ныл, что это всё вам не надо, но при этом на собесах именно алгоритмическими задачками измеряют вас что на джуна что на синьйора.
Причём такую практику наблюдаю преимущественно в РФ. Сколько раз собеседовался в Европейские/Американские проекты, там больше смотрят на решение реальных задачек, вместо этих всех алгосов
10 лет в кодинге Всего 30 задач на литкоде Некоторые по несколько суток решал, часть до сих пор не решил, хотя пробовал неделями Знаю все эти структуры данных перечисленные. Если ты такой же, то не попадешь ни в Яндекс ни даже в Авито с озоном. Просто пишу чтобы у людей самооценка не падала. Не все могут в алгоритмы. И это не обязательно чтобы зп получать. Поэтому просто количеством собесов берите.
Наши собесы во всякие яндексы, тиньковы и вк - самые лёгкие. Они просто смотрят на базу :) Любой собес в яндекс берётся на силе воли помноженной на время.
0:28 и правда, почему. Жду бригаду в комментах, по моему норм условие, детерменированность алгоритма и сложность О(log(2,n)) остаются, разве что плюс одна-две итерации могут прибавится в некоторых случаях
Значит не разобрался 😀 Когда реально что-то понял, то ты всегда это можешь вывести. Я давно забыл формулу корня квадратного уравнения и всякие суммы синусов и косинусов, но я всегда могу их вывести, потому что у меня сами принципы на уровне чувств, а чувства не забываются :)
Вот есть челы, которые говорят, что математика и физика не нужна, вроде бы как-то живут, но потом оказывается, что они верят во всякие астрологии и таро, не умеют искать и проверять информацию с помощью гугла и даже сами себе не могут объяснить свои механизмы принятия решений в каких-то бытовых ситуациях. А что самое забавное и одновременно страшное - они даже не осознают всего этого. Вот и с алгосами примерно то же самое, они нужны в первую очередь для формирования навыка мыслить и превращать проблемы в структурированные задачи
Решание задач на leetcode даст только навык решания задач на leetcode, ну и на собесе можно будет похвастаться и всё. К тому же большинство алгоритмов становятся понятнее в реальных задачах, нежели с абстрактными числами/строками.
Аналогия дерево сбалансированно = массив отсортирован притянута за уши по моему мнению. Дерево поиска всегда отсортировано)) Я бы сказал что массив отсортирован = сбалансированное дерево, это лучшая аналогия, если учитывать порядок слов. Балансировка и массив - это про быстрый доступ, дерево поиска - про сортировку
даже тут свою корпоративную культуру тащят. За 10 лет кодинга у меня буквально 0 решеных задач, нет аккаунта ни на кодварс, ни на литкод, ни где либо еще. Работая старшим инженером мне ровно 1 раз пришлось написать собственное дерево. РОВНО 1 РАЗ. Очень хочу, чтобы следующие 10 лет я не решил ни одной задачи где либо
я заходил на литкод примерно месяцев 7-8 назад сразу после того, как изучил базу по питону. На меня литкод повлиял так, что после него я стал задумываться над временной сложностью. Я стал убирать лишнее, срезать ненужные итерации - думать на производительность. Благодаря этому я стремился упрощать код, делать его короче. Я решил около 20-30 задач, из алгоритмов я запомнил только rle-сжатие строки и бинарный поиск. Однако после этого опыта я приблизился к программированию, и если бы не это, думаю, мой код был бы просто омерзительным)
писать производительность и питон в одном предложении должно быть запрещено) Иногда код на питоне можно ускорить, изменив поведение сборщика мусора. Ну и омерзительный код - тот, который плохо читается, который выглядит нелогично. Меньшее количество кода не означает ускорение программы. Если хочется скорости можно писать на ассемблере - считать количество тактов процессора: меньше тактов - быстрее работает)
@@Vitalis-sooон просто хочет писать производительный код именно на питоне, а не просто производительный код. Тут язык первичен, а производительность вторичен
@@braian0511 без проблем: но "укорачивание" делает код чаще всего медленнее (если не использовать NumPy или что-то другое, написанное на C и Fortran). Я на самом деле не понимаю зачем гнаться за оптимизацией, если сам язык не рассчитан на highload, но какое мне дело. Процесс оптимизации кода - это очень сложная часть, которая зависит от многих параметров. У моего знакомого оптимизация микросервиса заключалась не в алгоритмах, а в специфической конфигурации сборщика мусора (они вроде как отключили проверку на циклические связи объектов). Для начинающего программиста на первом месте должно стоять качество кода, по мере получения опыта и теории по computer scince станут возникать задачи, требующие оптимизации. И вот в такие моменты и нужно заниматься оптимизацией: когда в этом есть необходимость и когда навыки и компетенции позволяют говорить про то, как следует приступать к оптимизации. А решать проблемы, которые ещё даже не предвидятся, имхо, странно
бинарный поиск это численный метод решения уравнений "деление отрезка пополам". самый первый способ на приматах. короче айтишники как всегда придумывают какие-то свои непонятные определения, хотя по сути это вычислительная математика. на самом деле я теперь понимаю почему требуется вышка, если человек учит не через матан, а через готовую такую фигню, у него не формируется "интуиция" решения задач, а значит он будет менее эффективен в случае нешаблонных заданий
Почему непонятные определения? Очень даже понятное. Бинарный - binary - двоичный, то есть буквально состоящий из двух частей, больше-меньше, чем не деление пополам? Чтобы понять эту задачу матан вообще не нужен. Можешь привести пример нешаблонной задачи?
Ну обычно этот принцип впервые появляется в задачах по олимпиадной математике простеньких (а-ля сколько взвешиваний нужно чтобы найти тяжелую монетку), но это в целом разделяй-и-властвуй. У меня просто в школе на парах ввели бинпоиск и деление пополам, собственно мне кажется что он почти всегда возникает раньше чем вычматы о котором ты говоришь
Алгоритмы действительно юзлесс, а литкод пустая трата времени. Я пишу бэк ордеринга заказов и интеграции с другими сервисами для одного популярного оператора связи, постоянно работаю с хайлоад, в квартальных целях учу нейронки которые работают по документации этого же самого оператора, пишу для них ui и парсеры данных. Так вот НИГДЕ мне не пригодился литкод или алгоритмы. Собственно было бы интересно узнать мнение для чего их задрачивают? Если для себя то ок, но если для работы (на что наверное рассчитывают потребители такого контента) то это оооочень сомнительно.
А как алгоритмы юзлесс, если ты в хайлоад работаешь? Тип вообще не надо думать как работает алгоритм? И в нейронках тоже не надо знать алгоритмы??? Наверное ценный ты сотрудник. А коллега прям загляденье 😊
Согласен, в веб-разработке всем пох по одной просто причине - узким местом является сеть и БД, так что их обычно и оптимизируют, а на несколько сэкономленных тактов при поиске в каком-нить жысоне всем пох.
А я так за 10+ лет решения олимпиадных задачек и не смог полноценно осознать динамическое программирование. Каждый раз думаю что вроде понял, но все равно не могу осознать до конца :). Такая же история с QSort и красно-черными деревьями (Точнее в целом повороты деревьев голову ломают). Вроде и написать могу, а сама суть ускользает.
Первое с чего мне посоветовали изучать кодинг это codewars и leetcode. Где есть самые простые задачи(это про codewars скорее), где тебе и условия даны и все, что тебе остается это просто думать как написать решение задачи, т.к. по сути ты еще учишь базовый синтаксис. У меня такой первый опыт знакомства был.
@@iNesteroff ну если хеловорд можешь вывести в консоль , то уже программист. Вопрос будут ли тебе за это платить? Он наверное имел ввиду , работаешь ли ты программистом.
ерунда полная. Несколько лет назад я практиковался решать такие задачи (как раз мог написать различные обходы дерева и тд), но по итогу все это забыл, т.к нигде кроме задач литкода это в реальном программировании не нужно. Вывод: то что вам нужно для работы вы и так будете изучать по ходу дела, а это не более чем развлечение чтобы пофлексить. Ничего плохого в этом нет, но это не является необходимостью
Ага, изучаю сейчас Unity (уже четыре года пишу программы для инженеров, но надоело, решил в геймдев пойти), так вот тут вы в глаза никогда не увидите ни деревья, ни бинарные поиски ни сортировку ни что бы ни было ещё из серии структур и илгоритмов данных, т.к. всё это уже давно написано и работает под капотом фреймворков, но вот как раз их изучение, этих фреймворков - по сравнению с ними, любые алгоритмы и вот это всё покажется лёгкой прогулкой, т.к. там всё настолько неочевидно и узнать толком негде (даже chatgpt выдаёт шляпу, т.к. фреймворки (в отличии структур и алгоритмов) обновляются ежемесячно )
Решал как то задача о рюкзаке и банкомат в задаче про банкомат тупил сутки оказывается нужно было решить динамическим программированием а не жадным алгоритмом поиск подстроик в строке не мог решить пока не нашел алгоритм Кнутта Морриса Пратта
многие говорят что учить прогу в институте тоже бесполезно, но в институте я прекрасно решил все эти задачи на си и знаю любой алгоритм и любую (кроме красно белого дерева) структуру данных, из названных в видео
Я сидел на литкоде какое-то время назад. Выбивал даже 100%. Но решать там сотни задач - ради чего? Чтобы пойти в Яндекс и получать ЗП ниже рынка? Спасибо, я лучше потрачу время на SQL и другие актуальные технологии. P.S. а ещё на литкоде на подсчет по расходу памяти влияет... Длина названия переменной. Лол.
Вопрос который давно мучает, и ответов на него в нужном и понятном виде найти не удалось. Может даже будет как идея для видео) Вот ты начал прогать.. Вот изучил пару высоко-уровневых ЯП пусть будут C#, Java, Python Вот ты ковырял всяческие кейсы, пощупал ООП.. Как после всего такого опыта, ворваться в тему ASM, C, и прочие низкие ЯП Есть ли какая то идея/стратегия изучения имея кучу вредных привычек из вышеупомянутых языков? В интеренетах уроки по ASM идут по типу - это MOV EAX 123 -> положить в регистр EAX значение 123.. А нафига это нужно? зачем эти регистры? Что это вообще такое на примере высоких ЯП?/ Хотелось бы найти заветный алгоритм разложения задачи, которую мы привыкли решать средствами высокоуровневых языков, на подзадачи средствами ASM.
Во-первых, какой смысл демонстрировать примеры по стандартным алгосам на Змее? В такой редакции код будет работать ровно в 300 раз медленнее, чем на Си пи пи, а новички же подхватят. Есть же магический модуль numpy, где открывается чудесный мир абсолютно всего реализованного до тебя, при том на C и на Fortran (супер-быстро). А во-вторых, аналогия с математикой божественна) Особенно понравилось x² = -9. Типо, "Не получается - просто возьми и изобрети новые мнимые числа и скажи, что так надо (как в математике)". Математика - это божественное, это прекрасное, а программирование - это бизнес. По моему скромному мнению)
твоя божественная прекрасная математика была и остаётся таким же самым бизнесом. Во времена изобретения мнимых чисел математики соревновались в решении уравнений на скорость за деньги
Давно смотрю тебя. Не понимаю, кто твои подписчики? Люди, которые только выучили что такое массив? Или софт инженеры которым интересно как писать собственный gc?
Мне в литкоде особенно нравятся задачи с алгоритмами bfs и dfs Линкед листы тоже очень интересные Раньше когда слышал что нужно повернуть дерево или линкед лист я думал что это что то не достигаемое для меня, т.к. это в гугле спрашивают А сейчас все эти деревья и линкед листы верчу как профи😂
Массивы знаю, бинарный поиск как и кучу других тоже, включая сортировки. Че такое литкод понятия не имею. И автор повторяет это лучше любого маркетолога который хочет что то продать ) В программировании важно не столько знание конкретных шаблонов, сколько логику написания кода и способность писать его самостоятельно, зная базовый синтаксис. Способность самостоятельно придумать и написать поиск используя разные приемы и разные циклы будет значить больше чем просто запоминание конкретных отшлифованных алгоритмов. Потому что добавив к умению придумать что то, способность оптимизировать на основе представлений о скорости работы тех или инных методов, человек сам напишет тот идеальный алгоритм, в не худшем виде когда он окажется ему необходим.
довольно забавно выпускать видео длиной в 10 минут, в котором так и не пояснили нормально за чертов бинпоиск) за 10 минут можно персистентную очередь разобрать
Вот на ассемблере его поинтереснее писать, чем на плюсах ) И полезнее. На плюсах то он уже написан и есть в библиотеках. А вот если ты ломаешь сервак и пишешь шеллкод на асме для брутфорса пароля - тут то тебе и пригодится быстрый поиск символа
Бинарный поиск недавно был драматически улучшен. Оказалось, что типовой случай применения - это такая поисковая задача, когда в большинстве случаев искомый элемент не находится из-за того, что вообще выходит за границы массива. Т.е. оказывается больше самого большого или меньше самого меньшего. И если у тебя такой поисковый кейс, то гораздо эффективнее на каждом шаге делить отрезок не пополам, а откусывать 1/4 с одного из концов, в зависимости от того, какую часть выбираешь - правую или левую. Алгоритм 60 лет считался оптимальным, потому что никто просто не подумал о практической стороне его применения.
Нафиг этот литкод не усрался, особенно в РФ. Только всякие бесполезные курсы его втирают. А алгоритмы если и были нужны, то совершенно другого плана. И программировать они тоже не научат. Нравятся алгоритмы - учите высшую математику, а не литкод.
@@alexlightweight Просто сейчас не нужно изобретать алгоритмы или писать их с нуля. Пишешь qsort, hashmap, binary_search, un/ordered_map и всё это под капотом используется алгоритмы написанные до тебя. И сейчас задачи в основном бизнесовые это перекладывать json из базы в базу. Но это теория это надо знать, а джуны даже не могут правильную структуру выбрать. А то сколько раз вижу что выучили один list и на нём сортируют в цикле чтобы получить вместо nth_element. Это как строить дом без чертежа и сопромата, зная лишь то что кирпич ложить на кирпич.
посмотрел видос - очередной раз пришол к выводы, в начале начал надо прочитать Гроккаем алгоритмы. там в простой форме все это юыло подано уже неск лет назад.
1:35 а кто хорош в паттернах и шаблонах? Правильно - компьютеры, нейросети и искусственный интеллект, вот поэтому программирование - это мёрвая профессия!
Знаите пацаны мне всегда казалось в бинарном поиске когда мы ищем середину [mid = left + (right - left) / 2] что типа мы начниаем искать не с 1/2 массива, а начинаем с 1/4 массива.
10к лайков только за превью
братан ну 86к за алгоритмы это сильно
ждем 10 часов
Только когда будет с++ за 10 часов
Нет
Не видно что написан она футболке.
Рисование превьюхи заняло больше всего времени?)
75 задач от литкод просто начните решать, у них там своя программа есть(так и называется 75 leetcode), там все темы от массивов, стрингов до динамического программирования
Считаю, что тема стрингов программистов не раскрыта
Grind 75 если быть точнее.
@@ИнякинАлександр Leetcode 75 и Grind 75 будто разные планы. Какую выбрать?
@@pogromletov бери любой
385 задач на литкоде. Для меня решение литкода это просто приятное и интересное занятие, где ты бросаешь вызов какой-то очередной сложной задаче, проверяешь свои силы
Решал задачи я с перерывами, сначала 2 месяца каждый день, потом 2 месяца перерыв из-за нехватки времени, потом снова 30 дней подряд и т.д.
И я заметил, что моя производительность в выполнении задач на работе/в унике падает, если я перестаю решать литкод. Больше времени уделяешь на банальное осознание сложных тасок, тупишь иногда и тд. А потом, когда снова пробуешь решить задачи, решенные тобой ранее, они могут вызвать затруднение (очевидно, тут про нетривиальные медум-хард задачи, которые не помнишь). Я бы назвал это интеллектуальным тонусом. Да, ты все так же знаешь, понимаешь все эти структуры данных, всякие базовые вещи пишешь с закрытыми глазами, легко балансируешь деревья и тп, но алгоритмическая чуйка, умение посмотреть на задачу с нескольких альтернативных сторон и навык быстро найти правильный подход, на мой взгляд, - вопрос тренировки. И без постоянной практики эти навыки медленно улетучиваются (
И, если подводить черту, мне кажется, что понимание ТиСД + паттернов проектирования необходимо, чтобы писать адекватно вещи, которые чуть сложнее банальных крудов без какой-либо логики. Кто-то будет городить костыли, кто-то писать неэффективный код (так как не видит иного подхода), а кто-то сделает это чисто и красиво.
Почитал Грокаем Алгоритмы, прорешал несколько десятков задач на кодварсе(литкод меньше нравится) думая что это поможет мне в разработке и кодинге, в итоге спустя 4 месяца уже забыл все, потому что ни разу не доводилось применить хоть что-то оттуда. Все поиски и структуры данных уже реализованы, знай только в чем их отличие и используй по необходимости.
смысл не в реализации, а чтобы понять когда какую из структур лучше использовать. Задачки и прокачивают это, потому что в хороших задачах никто и не запрещает пользоваться всеми заранее реализованными структурами.
Абсолютно верно, для коммерческой разработки это бесполезная вещь, все уже давно это поняли, а товарищи из фаанга так же давно признались , что алгоритмическая секция была введена просто как еще один этап отсева, из за большого потока желающих, и она вообще никак не показывает скил разраба в коммерческой разработке
" в итоге спустя 4 месяца уже забыл все" - но Вы уже наработали связи между нейронами, и возможно именно эти связи Вам позволят решить\получить\преодолеть задачи и в другой области Вашей жизни.
0:34 ну кстати это не самый правильный вариант бинпоиска и невсемипринятая практика. Более верным является брать left и rig, чтобы они были меньше и больше ответа на единицу. Тогла условие while надо переписать r - l > 1, а от одного if можно избавиться. Код станет короче, а при переходе от случая к случаю будет меняться меньше.
Источник: лекция Павла Марвина про Бинпоиск
мотивацию набрали главное начать теперь
лучший видос для начинающих в алгоритмах)) где ж ты был пару лет назад)))
Пошел перепроходить курс по алгоритмам с лит кода)
Спасибо за видео
даже не задумывался что (l + r)//2 таит проблему получить переполнение. Уже профит от видео со старта)
(l | r) -((l^r)>>1) без переполнения
@arthursahakyan8125 Это что-то на олимпиадном. l + (r - l)//2 всё же понятнее рядовому работяге.
@@MrLotrus r - l тоже опасен с точки зрения overflow, прим. l =INT_MIN , R=INT_MAX
@@arthursahakyan8125l не может быть ниже -1)
А R всегда не выше MAX-1, т.к. для элегантной реализации алгоритма надо инициализировать R = n + 1
Вот бы преподы в унике так мотивировали учить алгосы и стурктуры данных :(
никита привет
Никита привет
пока Никита
Это странно если студента нужно мотивировать это изучать
Так, на обложке «С++ за 10 часов» есть
А видоса нет…
Не порядок😡😡
Я думаю это знак, что скоро...
10 часов переписывания чужого с++ кода под видео и умные словечки :D
Прям с языка снял, мой личный плачевный пример, на прошлой неделе проходил 3 тех интервью с разницей в один день каждое, готовил теорию, от переменных до особенностей роботы Кубика и Кафки ... и во всех 3 случаях идеально прошел теоретическую часть и завалил практику. Как не трудно догадаться практика те самые задачки с Литкода и КодВорс среднего уровня, при чем задачки я худо бедно решал, но когда просили улучшить, упростить, уменьшить ... просто впадал в ступор. Как результат сижу на КодВорс (имхо удобнее Литкода) и решаю задачки по 2-3 в день. Так что да какой бы синьйор не ныл, что это всё вам не надо, но при этом на собесах именно алгоритмическими задачками измеряют вас что на джуна что на синьйора.
Причём такую практику наблюдаю преимущественно в РФ. Сколько раз собеседовался в Европейские/Американские проекты, там больше смотрят на решение реальных задачек, вместо этих всех алгосов
@@kirillsaltykov9092звучит как неправда:)
хз в какие компании ты пройдёшь без алгоритмов :)
Про кодварс узнал ещё до литкода
И да, по мне тоже кожыарс понаряднее
Странные собесы значит, все же их редко спрашивают. Тебе не повезло просто
автор, спасибо за видео! Это именно то, что мне нужно было услышать сейчас!
10 лет в кодинге
Всего 30 задач на литкоде
Некоторые по несколько суток решал, часть до сих пор не решил, хотя пробовал неделями
Знаю все эти структуры данных перечисленные.
Если ты такой же, то не попадешь ни в Яндекс ни даже в Авито с озоном.
Просто пишу чтобы у людей самооценка не падала.
Не все могут в алгоритмы.
И это не обязательно чтобы зп получать. Поэтому просто количеством собесов берите.
В Яндекс не суйтесь даже. Будете проходить 10 раундов собесов и вас все равно не возьмут 😁
@@bipolar-fox Раз в год пытаюсь
Сейчас, говорят (они сами), у них 3 этапа практически как у всех
@@bipolar-foxой да хер с ними, яндекс как идеальная утопия - все хотят, да все не все могут.
на хлеб с икоркой не только в Яндексе заработать можно
@@bipolar-fox а если возьмут, то придётся работать по 14 часов в сутки
Наши собесы во всякие яндексы, тиньковы и вк - самые лёгкие. Они просто смотрят на базу :)
Любой собес в яндекс берётся на силе воли помноженной на время.
Еще стоит прочитать книгу "Грокаем алгоритмы"
"Грокаем алгоритмы" очень поверхностное содержание по сравнению с "Алгоритмы: построение и анализ"
плюсы на 10?
0:28 и правда, почему. Жду бригаду в комментах, по моему норм условие, детерменированность алгоритма и сложность О(log(2,n)) остаются, разве что плюс одна-две итерации могут прибавится в некоторых случаях
если я разобрался в бинарном поиске забыл потом снова разобрался и снова забыл, может он мне не нужен?
Значит не разобрался 😀
Когда реально что-то понял, то ты всегда это можешь вывести.
Я давно забыл формулу корня квадратного уравнения и всякие суммы синусов и косинусов, но я всегда могу их вывести, потому что у меня сами принципы на уровне чувств, а чувства не забываются :)
Вот есть челы, которые говорят, что математика и физика не нужна, вроде бы как-то живут, но потом оказывается, что они верят во всякие астрологии и таро, не умеют искать и проверять информацию с помощью гугла и даже сами себе не могут объяснить свои механизмы принятия решений в каких-то бытовых ситуациях. А что самое забавное и одновременно страшное - они даже не осознают всего этого.
Вот и с алгосами примерно то же самое, они нужны в первую очередь для формирования навыка мыслить и превращать проблемы в структурированные задачи
Решил 1600 задач на лит коде, сначала это сложно, потом это сложно но уже приятно.
Прошу профиль гуру
@TakeYourTimeBack хз кто то удаляет комментарии.
вот только собирался проходить бинарный поиск и видео твое, прям крутяк. Теперь с нетерпением жду когда начну изучать
В чем проблема просто начать?
Решал еще до этих литкодов, проект эйлера был такой, да и есть наверно. В конце видео правильно...
"Все это игра".
Решание задач на leetcode даст только навык решания задач на leetcode, ну и на собесе можно будет похвастаться и всё. К тому же большинство алгоритмов становятся понятнее в реальных задачах, нежели с абстрактными числами/строками.
++
вообще юзлесс тема, особенно для новичков
Аналогия дерево сбалансированно = массив отсортирован притянута за уши по моему мнению. Дерево поиска всегда отсортировано))
Я бы сказал что массив отсортирован = сбалансированное дерево, это лучшая аналогия, если учитывать порядок слов. Балансировка и массив - это про быстрый доступ, дерево поиска - про сортировку
даже тут свою корпоративную культуру тащят. За 10 лет кодинга у меня буквально 0 решеных задач, нет аккаунта ни на кодварс, ни на литкод, ни где либо еще. Работая старшим инженером мне ровно 1 раз пришлось написать собственное дерево. РОВНО 1 РАЗ. Очень хочу, чтобы следующие 10 лет я не решил ни одной задачи где либо
я заходил на литкод примерно месяцев 7-8 назад сразу после того, как изучил базу по питону.
На меня литкод повлиял так, что после него я стал задумываться над временной сложностью. Я стал убирать лишнее, срезать ненужные итерации - думать на производительность. Благодаря этому я стремился упрощать код, делать его короче. Я решил около 20-30 задач, из алгоритмов я запомнил только rle-сжатие строки и бинарный поиск. Однако после этого опыта я приблизился к программированию, и если бы не это, думаю, мой код был бы просто омерзительным)
писать производительность и питон в одном предложении должно быть запрещено) Иногда код на питоне можно ускорить, изменив поведение сборщика мусора. Ну и омерзительный код - тот, который плохо читается, который выглядит нелогично. Меньшее количество кода не означает ускорение программы. Если хочется скорости можно писать на ассемблере - считать количество тактов процессора: меньше тактов - быстрее работает)
@@Vitalis-sooон просто хочет писать производительный код именно на питоне, а не просто производительный код. Тут язык первичен, а производительность вторичен
@@braian0511 без проблем: но "укорачивание" делает код чаще всего медленнее (если не использовать NumPy или что-то другое, написанное на C и Fortran).
Я на самом деле не понимаю зачем гнаться за оптимизацией, если сам язык не рассчитан на highload, но какое мне дело.
Процесс оптимизации кода - это очень сложная часть, которая зависит от многих параметров. У моего знакомого оптимизация микросервиса заключалась не в алгоритмах, а в специфической конфигурации сборщика мусора (они вроде как отключили проверку на циклические связи объектов).
Для начинающего программиста на первом месте должно стоять качество кода, по мере получения опыта и теории по computer scince станут возникать задачи, требующие оптимизации. И вот в такие моменты и нужно заниматься оптимизацией: когда в этом есть необходимость и когда навыки и компетенции позволяют говорить про то, как следует приступать к оптимизации. А решать проблемы, которые ещё даже не предвидятся, имхо, странно
бинарный поиск это численный метод решения уравнений "деление отрезка пополам". самый первый способ на приматах. короче айтишники как всегда придумывают какие-то свои непонятные определения, хотя по сути это вычислительная математика. на самом деле я теперь понимаю почему требуется вышка, если человек учит не через матан, а через готовую такую фигню, у него не формируется "интуиция" решения задач, а значит он будет менее эффективен в случае нешаблонных заданий
поддерживаю
Почему непонятные определения? Очень даже понятное. Бинарный - binary - двоичный, то есть буквально состоящий из двух частей, больше-меньше, чем не деление пополам? Чтобы понять эту задачу матан вообще не нужен.
Можешь привести пример нешаблонной задачи?
Поддерживаю, база численных методов решения уравнений
Ну обычно этот принцип впервые появляется в задачах по олимпиадной математике простеньких (а-ля сколько взвешиваний нужно чтобы найти тяжелую монетку), но это в целом разделяй-и-властвуй. У меня просто в школе на парах ввели бинпоиск и деление пополам, собственно мне кажется что он почти всегда возникает раньше чем вычматы о котором ты говоришь
Я бы не сказал что деление отрезка пополам это обобщение бинпоиска скорее наоборот
Бинпоиск может намного больше чем решить уравнение
Алгоритмы действительно юзлесс, а литкод пустая трата времени.
Я пишу бэк ордеринга заказов и интеграции с другими сервисами для одного популярного оператора связи, постоянно работаю с хайлоад, в квартальных целях учу нейронки которые работают по документации этого же самого оператора, пишу для них ui и парсеры данных. Так вот НИГДЕ мне не пригодился литкод или алгоритмы. Собственно было бы интересно узнать мнение для чего их задрачивают? Если для себя то ок, но если для работы (на что наверное рассчитывают потребители такого контента) то это оооочень сомнительно.
Какая зп, если не секрет?
А как алгоритмы юзлесс, если ты в хайлоад работаешь? Тип вообще не надо думать как работает алгоритм?
И в нейронках тоже не надо знать алгоритмы??? Наверное ценный ты сотрудник. А коллега прям загляденье 😊
Согласен, в веб-разработке всем пох по одной просто причине - узким местом является сеть и БД, так что их обычно и оптимизируют, а на несколько сэкономленных тактов при поиске в каком-нить жысоне всем пох.
@@lowkeysleepалгоритмы на уровне литкода не надо. Просто понять как работает какойтто алгоритм - да, но уметь все самому реализовывать - нет
Для собесов
Максимально солидный видос
А я так за 10+ лет решения олимпиадных задачек и не смог полноценно осознать динамическое программирование. Каждый раз думаю что вроде понял, но все равно не могу осознать до конца :). Такая же история с QSort и красно-черными деревьями (Точнее в целом повороты деревьев голову ломают). Вроде и написать могу, а сама суть ускользает.
Да просто переназначение ссылок, ничего сложного.
Test
Я знаю все это но серовно скажу есть два типа те кто думает что им это не надо и те кто уже поняли что это им не надо
И третий тип - кто понял, зачем это надо и теперь работает в Google
@@bipolar-foxа потом выгорает там за два года и уходит
@bipolar-fox и не использует по итогу
Первое с чего мне посоветовали изучать кодинг это codewars и leetcode. Где есть самые простые задачи(это про codewars скорее), где тебе и условия даны и все, что тебе остается это просто думать как написать решение задачи, т.к. по сути ты еще учишь базовый синтаксис. У меня такой первый опыт знакомства был.
А сейчас ты программист?
@ а что значит быть программистом? Про себя могу сказать, что все еще учусь.
@@iNesteroff ну если хеловорд можешь вывести в консоль , то уже программист. Вопрос будут ли тебе за это платить? Он наверное имел ввиду , работаешь ли ты программистом.
Интересно, это связано с тем, что сегодня на литкоде задача дня уровня хард? (22.12)😅
Неожиданно очень хорошее видео
ерунда полная. Несколько лет назад я практиковался решать такие задачи (как раз мог написать различные обходы дерева и тд), но по итогу все это забыл, т.к нигде кроме задач литкода это в реальном программировании не нужно. Вывод: то что вам нужно для работы вы и так будете изучать по ходу дела, а это не более чем развлечение чтобы пофлексить. Ничего плохого в этом нет, но это не является необходимостью
Не знаете бинарный поиск? Читайте книгу Грокаем алгоритмы
сомнительно, но окэээй
Алгоритмы особо не нужны, чтобы красить кнопки и писать круды, но дальше могут пригодиться
Ага, изучаю сейчас Unity (уже четыре года пишу программы для инженеров, но надоело, решил в геймдев пойти), так вот тут вы в глаза никогда не увидите ни деревья, ни бинарные поиски ни сортировку ни что бы ни было ещё из серии структур и илгоритмов данных, т.к. всё это уже давно написано и работает под капотом фреймворков, но вот как раз их изучение, этих фреймворков - по сравнению с ними, любые алгоритмы и вот это всё покажется лёгкой прогулкой, т.к. там всё настолько неочевидно и узнать толком негде (даже chatgpt выдаёт шляпу, т.к. фреймворки (в отличии структур и алгоритмов) обновляются ежемесячно )
и почему же полусумма плохая практика?
вылет за край?
Только вчера увидел +-идентичное видео от neetcode. Мне интересно, это случайность?)
Решал как то задача о рюкзаке и банкомат в задаче про банкомат тупил сутки оказывается нужно было решить динамическим программированием а не жадным алгоритмом поиск подстроик в строке не мог решить пока не нашел алгоритм Кнутта Морриса Пратта
многие говорят что учить прогу в институте тоже бесполезно, но в институте я прекрасно решил все эти задачи на си и знаю любой алгоритм и любую (кроме красно белого дерева) структуру данных, из названных в видео
BFS и DFS - это алгоритмы обхода графа, а не дерева. На дерево они сужаются в частном случае
Алгоритмами обхода дерева они все ещё являются
@@krolikrodjer8879, формально да, я, скорее про то, что слушатель может получить неправильную картину, подумав, что это только про дерево
Я сидел на литкоде какое-то время назад. Выбивал даже 100%. Но решать там сотни задач - ради чего? Чтобы пойти в Яндекс и получать ЗП ниже рынка?
Спасибо, я лучше потрачу время на SQL и другие актуальные технологии.
P.S. а ещё на литкоде на подсчет по расходу памяти влияет... Длина названия переменной. Лол.
бинарное дерево поиска не является массивом...
хз, пишу приложение на десктоп с Qt на c++ и вопрос - зачем мне эти бинарные поиски?
Они не только в десктопе не нужны. Это просто способ самоутвердиться для задротов.
Для собесов, тебе же сказали в начале
Для парсинга json конфигов бинарный поиск удобно использовать для валидации полей
А что делает приложение ? Бинарный поиск может пригодится для быстрого нахождения числа в массиве.
@@igorglushatov1948 про готовые библиотеки не слышал ?! )))))
2:43 - 4:30
какая музыка?
Группа Тутси - Тому ли я дала.
Вопрос который давно мучает, и ответов на него в нужном и понятном виде найти не удалось. Может даже будет как идея для видео)
Вот ты начал прогать..
Вот изучил пару высоко-уровневых ЯП пусть будут C#, Java, Python
Вот ты ковырял всяческие кейсы, пощупал ООП..
Как после всего такого опыта, ворваться в тему ASM, C, и прочие низкие ЯП
Есть ли какая то идея/стратегия изучения имея кучу вредных привычек из вышеупомянутых языков?
В интеренетах уроки по ASM идут по типу - это MOV EAX 123 -> положить в регистр EAX значение 123..
А нафига это нужно? зачем эти регистры? Что это вообще такое на примере высоких ЯП?/
Хотелось бы найти заветный алгоритм разложения задачи, которую мы привыкли решать средствами высокоуровневых языков, на подзадачи средствами ASM.
Во-первых, какой смысл демонстрировать примеры по стандартным алгосам на Змее? В такой редакции код будет работать ровно в 300 раз медленнее, чем на Си пи пи, а новички же подхватят. Есть же магический модуль numpy, где открывается чудесный мир абсолютно всего реализованного до тебя, при том на C и на Fortran (супер-быстро). А во-вторых, аналогия с математикой божественна) Особенно понравилось x² = -9. Типо, "Не получается - просто возьми и изобрети новые мнимые числа и скажи, что так надо (как в математике)". Математика - это божественное, это прекрасное, а программирование - это бизнес. По моему скромному мнению)
твоя божественная прекрасная математика была и остаётся таким же самым бизнесом. Во времена изобретения мнимых чисел математики соревновались в решении уравнений на скорость за деньги
На литкоде ты numpy не затащишь, только стандартная либа
Выдал базу
Годно, спасибо!
Давно смотрю тебя. Не понимаю, кто твои подписчики? Люди, которые только выучили что такое массив? Или софт инженеры которым интересно как писать собственный gc?
Все сразу
Мне в литкоде особенно нравятся задачи с алгоритмами bfs и dfs
Линкед листы тоже очень интересные
Раньше когда слышал что нужно повернуть дерево или линкед лист я думал что это что то не достигаемое для меня, т.к. это в гугле спрашивают
А сейчас все эти деревья и линкед листы верчу как профи😂
Вин, ну где же плюсы??
спс, но часто музыка мешает
В вузе проходили это
Массивы знаю, бинарный поиск как и кучу других тоже, включая сортировки. Че такое литкод понятия не имею. И автор повторяет это лучше любого маркетолога который хочет что то продать )
В программировании важно не столько знание конкретных шаблонов, сколько логику написания кода и способность писать его самостоятельно, зная базовый синтаксис. Способность самостоятельно придумать и написать поиск используя разные приемы и разные циклы будет значить больше чем просто запоминание конкретных отшлифованных алгоритмов. Потому что добавив к умению придумать что то, способность оптимизировать на основе представлений о скорости работы тех или инных методов, человек сам напишет тот идеальный алгоритм, в не худшем виде когда он окажется ему необходим.
чё ты высрал, какой маркетолог. Литкод нужен для того пробовать разные задачи, и развиваться в разные стороны.
довольно забавно выпускать видео длиной в 10 минут, в котором так и не пояснили нормально за чертов бинпоиск)
за 10 минут можно персистентную очередь разобрать
Он не умеет
127й в комментарии и 15 718й в просмотре
Ахахахах чел ты бы дальше тачки перепродавал, зачем тебе это программирование ?
автор:бинарный поиск. что себе представляю я- ты пишешь код для поиска нужного символа в оперативной памяти на ассемблере.
Вот на ассемблере его поинтереснее писать, чем на плюсах ) И полезнее. На плюсах то он уже написан и есть в библиотеках. А вот если ты ломаешь сервак и пишешь шеллкод на асме для брутфорса пароля - тут то тебе и пригодится быстрый поиск символа
А память что, отсортирована что ли?)) Почему такая ассоциация?
Можешь начинать представлять работу кремния в полупроводниках ))
Бинарный поиск недавно был драматически улучшен. Оказалось, что типовой случай применения - это такая поисковая задача, когда в большинстве случаев искомый элемент не находится из-за того, что вообще выходит за границы массива. Т.е. оказывается больше самого большого или меньше самого меньшего. И если у тебя такой поисковый кейс, то гораздо эффективнее на каждом шаге делить отрезок не пополам, а откусывать 1/4 с одного из концов, в зависимости от того, какую часть выбираешь - правую или левую. Алгоритм 60 лет считался оптимальным, потому что никто просто не подумал о практической стороне его применения.
Нафиг этот литкод не усрался, особенно в РФ. Только всякие бесполезные курсы его втирают. А алгоритмы если и были нужны, то совершенно другого плана.
И программировать они тоже не научат. Нравятся алгоритмы - учите высшую математику, а не литкод.
Такого же мнения ! Если бы алгосы использовались в реальной работе их знал бы каждый Джун без всяких литкодов. А так ересь полная.
в 99% релаьной разработки не нужны алгоритмы
@@jon4775 в некоторых областях на все 100% ! )))
а какого плана нужны алгоритмы?
@@alexlightweight Просто сейчас не нужно изобретать алгоритмы или писать их с нуля. Пишешь qsort, hashmap, binary_search, un/ordered_map и всё это под капотом используется алгоритмы написанные до тебя. И сейчас задачи в основном бизнесовые это перекладывать json из базы в базу. Но это теория это надо знать, а джуны даже не могут правильную структуру выбрать. А то сколько раз вижу что выучили один list и на нём сортируют в цикле чтобы получить вместо nth_element. Это как строить дом без чертежа и сопромата, зная лишь то что кирпич ложить на кирпич.
яяяяяяя
посмотрел видос - очередной раз пришол к выводы, в начале начал надо прочитать Гроккаем алгоритмы.
там в простой форме все это юыло подано уже неск лет назад.
1-й
Алгоритмы нафиг не нужны в реальной работе ! Хватит впаривать начинающим что им необходимы алгосы. и вообще распространять этот идиотский миф.
Ага ага, я учусь на кибербеза и терь страдаю, потому что не учил алгосы в начале
@@adori.eterno ну кибербез это другое)
@@adori.eterno для веба нахер не нужны
@@RomanUnrealСкорее вебмакаки это другое. Даже в том самом ds пригождаются алгоритмы при работе с графовыми данными. Тупо для вычленения признаков.
А потом получается - при обработке 10К+ записей для каждой лезем в базу для получения ID из словаря групп на 100 записей
да
Йоу
Литкод - зло
кодворс - гавно!
Где мой комментарий?
Снесли?
1:35 а кто хорош в паттернах и шаблонах? Правильно - компьютеры, нейросети и искусственный интеллект, вот поэтому программирование - это мёрвая профессия!
Вообще нет. Он очень херово решает олимп. задачи.
@@tusman4ik Вы давно пробовали проверять?
@@tusman4ik на работе часто приходится решать олимп. задачи?
@@mndtr0 проверять что? Я сижу, решаю задачи. Когда в тупике, иду спрашиваю ГПТ. Он несёт херню в 99,% случаев.
@@Oleg-rw7dg не работаю, но в проекте реализовывал свой подсчёт модифицированного расстояния Левенштейна.
Знаите пацаны мне всегда казалось в бинарном поиске когда мы ищем середину [mid = left + (right - left) / 2] что типа мы начниаем искать не с 1/2 массива, а начинаем с 1/4 массива.
help с каких пор 2147483648.0 округляется до 2147483647? В тоже время 1,0 до нуля почему то не округляется
блин как я хочу оформить подписку на литкод вечную...