Спасибо за задачку. Решил через словари, тоже компактненько получилось. Оцени=) ```python def getstr_foo(str1,result:int): dct = {} for i in range(len(str1)): dct[str1[i]] = dct.get(str1[i],0) + 1 if dct[str1[i]] > 1: result = len(dct) if result < len(dct) else result return getstr_foo(str1[1:], result) return result if result !=0 else len(dct) print(getstr_foo('abcbada', 0)) ```
@rybiizhirКүн бұрын
Вобщем чудес не бывает, братьь легко, записывать крайне сложно. Возможно под капотом шардинг идет с несколькими вложениями, 2 байта на общий список + 2 байта вложение, + 4 байта еще глуюже. Тогда переброска будет дешевле, а получение все так же близко к 1
@user-wt8cm7tb4lКүн бұрын
как стать художником ? рисовать больше - как стать музыкантом ? играть больше - как стать программистом ? программировать больше
@Activan12 күн бұрын
Саша возвращайся в Россию.
@Activan12 күн бұрын
Ты крут. Но ты часть логики перенес в set. Так можно было?
@zrxmax_2 күн бұрын
начинать вернее с середины, а не с угла
@LITRJIJI2 күн бұрын
Спасибо
@zrxmax_3 күн бұрын
люблю твои видео, но пожалуйста, подружись с нормальным вайтбордом, или чем то для кода, выглядят интерфейсы где ты показываешь код, убого
@user-dr9vi5bz2n4 күн бұрын
Почему создаётся изначально 5 бакетов, когда начальная ёмкость хешсета 16?
@MattiWilkins-kf6cr6 күн бұрын
очень вдохновляют такие кейсы! Еще я стараюсь следить за проектами Жени Давыдова, недавно вышел подкаст с ним на EL.together, чувак такие советы раздает!
@user-fy6dm6mw9y6 күн бұрын
Спасибо за полезное видео
@Mikhail_Zaitsev7 күн бұрын
элементарный алгоритм и первое что приходит в голову. Ну а первый вариант очевидно отвергается сразу. Я удивлён простотой.
@Hohmachik7 күн бұрын
В первом массиве тоже ответов несколько)) -1+8=7
@user-ev3gf2ew8y7 күн бұрын
А на операцию поиска числа в хэш-сете чё не надо ресурсов тратить вроде отдельного цикла? Типа написал такой 'if num in _set' и весь такой в белом?
@sashalukin7 күн бұрын
kzread.info/dash/bejne/pISklpiilKjcnrA.html
@Hohmachik8 күн бұрын
Почему последний алгоритм работает за O(N)? Я не разбираюсь в подсчете продолжительности процессов и мне казалось, что добавление цикла увеличивает степень на 1, а тут как раз 2 цикла
@karfagen868 күн бұрын
Грамотно объяснил, спасибо!
@appngo63748 күн бұрын
Я на практике редко пользуюсь конструкцией while. В 1 проценте случаев) Можно еще решить вот так. Решение без скользящего окна. Хотя суть очень похожа. fun getMaxUniqueWithSet(input: String): Int { var maxSequence = 0 val set = mutableSetOf<Char>() input.forEach { c -> if (set.contains(c)) { if (set.size > maxSequence) { maxSequence = set.size } set.clear() } set.add(c) } return max(maxSequence, set.size) }
@user-ft2yu8vj3r8 күн бұрын
я бы решал через алгебру, но нужно обработать крайние случаи и написать костыли. А так если люди не против и нужно что-то сделать за короткое время то и так можно.
@rusfungame8 күн бұрын
У меня 4 года опыта в программировании, 3 года коммерции, чувствую себя таким джуном) Старший разработчик - джун.
@vilture570610 күн бұрын
Алгоритм Дейкстры
@bobbob-rd7yz10 күн бұрын
можно просто 1 раз идти по масиву и добавлять колличество уникальних елементов до первого повоторения в новий масив, потом повторять подсчет с последнего уникального елемента, а потом просто взять наибольшое число нового масива.
@Magomed-r10 күн бұрын
Было интересно
@uasite10 күн бұрын
Откуда у вас эти стрОку, подстрОку? Ведь строкА, а значит строкУ, а не стрОку?
@user-yc8fh8ri6w11 күн бұрын
Я обязательно выживу......
@oArleo11 күн бұрын
Я бы построчным вводом добавлял , сортировал массив и сравнивал первую и вторую позиции и как только они равны записал бы размер массива-1, а потом начинал бы со второго символа.
@ktrgamesbigskelleton219312 күн бұрын
Не легче в каунт записывать на первом цыкле в каждый индекс сколько раз ты встретил число такое же или больше , а во втором цикле вернуть найбольший индекс каунт в котором записанное число равно или больше индекса
@DrewPython12 күн бұрын
известно куда последний переезд - everybody comes to Hollywood.
@insable745912 күн бұрын
чувак на серьёзе рассказывает как решать 24 задание (из 27) из егэ по информатике..
@ivankondratyev236312 күн бұрын
реализация "простого" решения убила... я даже и не подумал что так можно XD
@user-dk4mm8mt2t12 күн бұрын
После того как мы посчитали можно не сортировать, а работать непосредственно с массивом подсчитанных значений. Идём с конца и если значение больше или равно индексу, то возвращаем его, если нет , то увеличиваем следующее значение (индекс - 1) на количество в данной ячейке (вед h статьи должны цитироваться минимум h раз, а не ровно h). Вот код второй части на go: for i := len(cnt)-1; i>=0; i-- { if cnt[i] >= i { return i } if i > 0 { cnt[i-1]+=cnt[i] } }
@v.demchenko12 күн бұрын
Я бы хотел поправить автора видео. Дело в том, что приобьяснении он говорит про итерацию по числам справа. Но по делу, скрипт работает с нулевым и последующими елементами. Для того, что бы реализовать процесс как было обьясненно. Нужно ко второму циклу накинуть +1 и в сумму в первом цикле обьявить как елемент по которому итерируемся.. плюс условия по проверке так же изменить на начало.
@alex-and-er12 күн бұрын
А с микрофоном (петличкой) было бы намного приятнее слушать ;-)
@karpulix12 күн бұрын
20:59 позволю себе ремарку: `answer = Math.max(answer, maxLeftPath + maxRightPath + node.val);` ☝тут в `answer` будет записан 0 если на входе корень без детей, но с отрицательным значением или если в дереве только отрицательные значения ; мне кажется, нужно перед вызовом `helper()` инициализировать `answer = root.val`
@user-vc5nj9zd6i13 күн бұрын
"математик сделает лучше" с Савватеевым разбирали эту задачу. Найти решение можно просто, если ты олимпиадник. Если в компанию нужны олимпиадники, то хорошая задача
@dimasw9913 күн бұрын
От души братишка, под пиво вечерком посмотреть самое оно!
@AlexeyGogots13 күн бұрын
Какой еще BFS?! Эта задача для доски бесконечного размера, хоть по той же ссылке на leetcode.
@daniyarzhanakhmetov774113 күн бұрын
Крутецки всё объяснил! Спасибо!
@iqfunru13 күн бұрын
А мне показалось, что надо начинать с середины матрицы по типу двоичного поиска: 16 > 14, поэтому примерно четверть матрицы вправо и вниз от 16-ти не подходит. И т.д....
@iqfunru13 күн бұрын
А тараканы водятся в этих квартирах?
@romanpr669113 күн бұрын
В какой проге анимацию делаете?
@alexeidubrovin523413 күн бұрын
но вы же второй при перемещении left тоже опять перебираете, не проще ли использовать std::map, хранить там позицию символа и сразу смещать позицию на искомый символ+1
@alexeis62813 күн бұрын
динамическое программирование?? не метод математической индукции?
@__-oc6iq14 күн бұрын
Что на счёт знания английского?
@foxes_pak14 күн бұрын
Не забывайте упомянуть ссылаясь на Яндекс, что они там такие задачки решают на листочке карандашом.
@aleks232214 күн бұрын
Наконец-то dyversity inclusif задачи от гугл
@rybiizhir14 күн бұрын
Можно слоями, а можно просто назначить вес каждой клетке.
@aleksanderpeshkin226614 күн бұрын
Что за бред 😮 Яндекс так обучает ??))
@ploho__369915 күн бұрын
это разве не первая задача литкода?)
@hanamura884416 күн бұрын
на самом деле работает это немного иначе, да и хеш таблица и множество немного разные структуры данных. wiki: Красно-чёрные деревья являются одними из наиболее активно используемых на практике самобалансирующихся деревьев поиска. В частности, контейнеры set и map в большинстве реализаций библиотеки STL языка C++[3], класс TreeMap языка Java[4], так же, как и многие другие реализации ассоциативного массива в различных библиотеках, основаны на красно-чёрных деревьях. возможно где-то это и работает тем способом, что изложил автор, но явно не везде. за материал - отдельное спасибо. сделано хорошо. но вот с тем, как это работает на самом деле я бы поспорил. если кто-то хочет сам проверить как это работает(исходя из того, что утверждает автор), то самый простой и логичный способ - замеры времени получения того или иного элемента из коллекции. всем хорошего дня!
@victorkochkarev257616 күн бұрын
Похоже это уже устоявшаяся не правильная практика, на собеседование давать подобные алгоритмические задачи при том, что они не имеют обсолютно никакого отношению к работе кандидата. А решение подобных задач это отдельный скил, который часто присушь тем, кто занимался соревновательным программированием.
Пікірлер
Спасибо за задачку. Решил через словари, тоже компактненько получилось. Оцени=) ```python def getstr_foo(str1,result:int): dct = {} for i in range(len(str1)): dct[str1[i]] = dct.get(str1[i],0) + 1 if dct[str1[i]] > 1: result = len(dct) if result < len(dct) else result return getstr_foo(str1[1:], result) return result if result !=0 else len(dct) print(getstr_foo('abcbada', 0)) ```
Вобщем чудес не бывает, братьь легко, записывать крайне сложно. Возможно под капотом шардинг идет с несколькими вложениями, 2 байта на общий список + 2 байта вложение, + 4 байта еще глуюже. Тогда переброска будет дешевле, а получение все так же близко к 1
как стать художником ? рисовать больше - как стать музыкантом ? играть больше - как стать программистом ? программировать больше
Саша возвращайся в Россию.
Ты крут. Но ты часть логики перенес в set. Так можно было?
начинать вернее с середины, а не с угла
Спасибо
люблю твои видео, но пожалуйста, подружись с нормальным вайтбордом, или чем то для кода, выглядят интерфейсы где ты показываешь код, убого
Почему создаётся изначально 5 бакетов, когда начальная ёмкость хешсета 16?
очень вдохновляют такие кейсы! Еще я стараюсь следить за проектами Жени Давыдова, недавно вышел подкаст с ним на EL.together, чувак такие советы раздает!
Спасибо за полезное видео
элементарный алгоритм и первое что приходит в голову. Ну а первый вариант очевидно отвергается сразу. Я удивлён простотой.
В первом массиве тоже ответов несколько)) -1+8=7
А на операцию поиска числа в хэш-сете чё не надо ресурсов тратить вроде отдельного цикла? Типа написал такой 'if num in _set' и весь такой в белом?
kzread.info/dash/bejne/pISklpiilKjcnrA.html
Почему последний алгоритм работает за O(N)? Я не разбираюсь в подсчете продолжительности процессов и мне казалось, что добавление цикла увеличивает степень на 1, а тут как раз 2 цикла
Грамотно объяснил, спасибо!
Я на практике редко пользуюсь конструкцией while. В 1 проценте случаев) Можно еще решить вот так. Решение без скользящего окна. Хотя суть очень похожа. fun getMaxUniqueWithSet(input: String): Int { var maxSequence = 0 val set = mutableSetOf<Char>() input.forEach { c -> if (set.contains(c)) { if (set.size > maxSequence) { maxSequence = set.size } set.clear() } set.add(c) } return max(maxSequence, set.size) }
я бы решал через алгебру, но нужно обработать крайние случаи и написать костыли. А так если люди не против и нужно что-то сделать за короткое время то и так можно.
У меня 4 года опыта в программировании, 3 года коммерции, чувствую себя таким джуном) Старший разработчик - джун.
Алгоритм Дейкстры
можно просто 1 раз идти по масиву и добавлять колличество уникальних елементов до первого повоторения в новий масив, потом повторять подсчет с последнего уникального елемента, а потом просто взять наибольшое число нового масива.
Было интересно
Откуда у вас эти стрОку, подстрОку? Ведь строкА, а значит строкУ, а не стрОку?
Я обязательно выживу......
Я бы построчным вводом добавлял , сортировал массив и сравнивал первую и вторую позиции и как только они равны записал бы размер массива-1, а потом начинал бы со второго символа.
Не легче в каунт записывать на первом цыкле в каждый индекс сколько раз ты встретил число такое же или больше , а во втором цикле вернуть найбольший индекс каунт в котором записанное число равно или больше индекса
известно куда последний переезд - everybody comes to Hollywood.
чувак на серьёзе рассказывает как решать 24 задание (из 27) из егэ по информатике..
реализация "простого" решения убила... я даже и не подумал что так можно XD
После того как мы посчитали можно не сортировать, а работать непосредственно с массивом подсчитанных значений. Идём с конца и если значение больше или равно индексу, то возвращаем его, если нет , то увеличиваем следующее значение (индекс - 1) на количество в данной ячейке (вед h статьи должны цитироваться минимум h раз, а не ровно h). Вот код второй части на go: for i := len(cnt)-1; i>=0; i-- { if cnt[i] >= i { return i } if i > 0 { cnt[i-1]+=cnt[i] } }
Я бы хотел поправить автора видео. Дело в том, что приобьяснении он говорит про итерацию по числам справа. Но по делу, скрипт работает с нулевым и последующими елементами. Для того, что бы реализовать процесс как было обьясненно. Нужно ко второму циклу накинуть +1 и в сумму в первом цикле обьявить как елемент по которому итерируемся.. плюс условия по проверке так же изменить на начало.
А с микрофоном (петличкой) было бы намного приятнее слушать ;-)
20:59 позволю себе ремарку: `answer = Math.max(answer, maxLeftPath + maxRightPath + node.val);` ☝тут в `answer` будет записан 0 если на входе корень без детей, но с отрицательным значением или если в дереве только отрицательные значения ; мне кажется, нужно перед вызовом `helper()` инициализировать `answer = root.val`
"математик сделает лучше" с Савватеевым разбирали эту задачу. Найти решение можно просто, если ты олимпиадник. Если в компанию нужны олимпиадники, то хорошая задача
От души братишка, под пиво вечерком посмотреть самое оно!
Какой еще BFS?! Эта задача для доски бесконечного размера, хоть по той же ссылке на leetcode.
Крутецки всё объяснил! Спасибо!
А мне показалось, что надо начинать с середины матрицы по типу двоичного поиска: 16 > 14, поэтому примерно четверть матрицы вправо и вниз от 16-ти не подходит. И т.д....
А тараканы водятся в этих квартирах?
В какой проге анимацию делаете?
но вы же второй при перемещении left тоже опять перебираете, не проще ли использовать std::map, хранить там позицию символа и сразу смещать позицию на искомый символ+1
динамическое программирование?? не метод математической индукции?
Что на счёт знания английского?
Не забывайте упомянуть ссылаясь на Яндекс, что они там такие задачки решают на листочке карандашом.
Наконец-то dyversity inclusif задачи от гугл
Можно слоями, а можно просто назначить вес каждой клетке.
Что за бред 😮 Яндекс так обучает ??))
это разве не первая задача литкода?)
на самом деле работает это немного иначе, да и хеш таблица и множество немного разные структуры данных. wiki: Красно-чёрные деревья являются одними из наиболее активно используемых на практике самобалансирующихся деревьев поиска. В частности, контейнеры set и map в большинстве реализаций библиотеки STL языка C++[3], класс TreeMap языка Java[4], так же, как и многие другие реализации ассоциативного массива в различных библиотеках, основаны на красно-чёрных деревьях. возможно где-то это и работает тем способом, что изложил автор, но явно не везде. за материал - отдельное спасибо. сделано хорошо. но вот с тем, как это работает на самом деле я бы поспорил. если кто-то хочет сам проверить как это работает(исходя из того, что утверждает автор), то самый простой и логичный способ - замеры времени получения того или иного элемента из коллекции. всем хорошего дня!
Похоже это уже устоявшаяся не правильная практика, на собеседование давать подобные алгоритмические задачи при том, что они не имеют обсолютно никакого отношению к работе кандидата. А решение подобных задач это отдельный скил, который часто присушь тем, кто занимался соревновательным программированием.