Python разработчик | Собеседование с задачей из Яндекса. Максим Никулин

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

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

  • @AndyPronin
    @AndyPronin  Год назад +2

    t.me/RUclipsPronin Чат для общения pyhton разработчиков и им сочуствующих. Свободное общение, тестовые и вопросы с собесов и прочее. Заходите, там вам рады.
    Поддержать канал: www.tinkoff.ru/rm/pronin.andr...
    Обычно денежка идёт на книжки про питончик. Но иногда на светлое и тёмное.

    • @maxnmx4544
      @maxnmx4544 Год назад +1

      В == внимательность

  • @100v1
    @100v1 Год назад +23

    Мужик и вправду молодец. А вот собеседующий, если и первоклассный программист, но никак не первоклассный собеседующий. Все интервью чувствовалось напряжение между участниками. Ощущение, что мужика расстреляют в конце, если что-то не сделает. Но в целом, полезное видео. Оно не только про программирование, но и про напряжение во время собеседования к которому всегда нужно быть готовым.

  • @ДаниилДуханин-ш7ц
    @ДаниилДуханин-ш7ц Год назад +19

    Комент в поддержку Максима! С боевым крещением!😉

  • @nik1364
    @nik1364 Год назад +4

    Целочисленное деление на 16:50 все еще надо, не все хорошо. Нас попросили вернуть пропущенный int, а мы отдаем float. Надо либо в инт откастить, либо действительно // использовать

  • @umni_kot
    @umni_kot Год назад +15

    Считаю что Максим отлично справился, еще и формулы умудрялся вспоминать ) Я сам недавно на первом лайв кодинге сидел тупил над простой задачей, потом после интервью решил за 30 сек .

  • @7IdE
    @7IdE Год назад +5

    А задача реально интересная оказалась.
    Я свел ее решение к 3 случаям: 1) 2 числа за пределами (1, max) - тут сразу return, 2) 1 число за пределами - тут все сведется к вычислению числа за пределами + к поиску 1 пропущенного числа в массиве(т.е. к предыдущей задаче), 3) оба числа в массиве. Вот тут я решал через произведение последовательностей(правильной и текущей) и смотрел на остатки от деления/результат умножения на определенное число.
    Чисто технически, сложность тут будет О(N) по времени и О(1) по памяти.
    Ну и сортировку подсчетом никто не отменял, но это + О(N) памяти.
    А по поводу собеса: в целом, весьма и весьма не дурно. Да, по факту, код не рабочий(там IndexError будет), задачу он решил не за О(n), было много ошибок, в том числе выход за границы массива, а корнеркейсы и тесты только после подсказок начал искать, но: у него сразу чувствуется алгоритмическая подготовка и то, что мозг работает и пытается обдумывать свои действия.
    Не уверен, что это уровень Яндекса(если такой уровень есть вообще), но это был достойный собес, как по мне.
    P.S. Нужно больше алгоритмических собесов.

    • @AndyPronin
      @AndyPronin  Год назад +1

      будет)

    • @stepfpv
      @stepfpv Год назад

      а разве нельзя посмотреть пересечение двух списков? просто одной командой. список 1 и список 2 и различия между ними?
      result = list(set(lst1) ^ set(lst2))
      или
      result = list(set(lst1) - set(lst2))

    • @AndyPronin
      @AndyPronin  Год назад

      @@stepfpv а память?

    • @stepfpv
      @stepfpv Год назад

      @@AndyPronin а память я пока не знаю ))) я три дня смотрю ролики про питон )))

    • @ildarius116
      @ildarius116 Год назад

      @@AndyPronin Зато сложность O(n)
      source_set = set(arr)
      pattern_set = set(i for i in range(max(arr) + 1))
      result_set = pattern_set - source_set
      Сложность, грубо - O(5n) ... ну, памяти раза в 2 больше займет ;-)

  • @6istori907
    @6istori907 Год назад +2

    def find_missing_numbers(nums, n):
    all_numbers = set(range(1, n + 1))
    existing_numbers = set(nums)
    missing_numbers = all_numbers - existing_numbers
    return list(missing_numbers)
    nums = [2, 3, 7, 8, 10, 12, 18, 20, 28,]
    n = max(nums)
    missing = find_missing_numbers(nums, n)
    print("Недостающие числа:", missing)
    Вот пример кода который короче и может считать пропущенные числа, я только начал программировать, и знаю что можно и лучше сделать этот код, не судите строго.

  • @ЕвгенийКрасилов-о9о

    Мужик очень бодро начал, вспомнил математическую формулу, понял как применить (пусть и некая мешанина в голове была). Потом понял как использовать предыдущее решение с новой задачей и попытался написать код. В то же время интервьюер почему-то сказал, что править(хотя, скорее, было бы правильнее добавить аргумент) старую функцию не имеет смысла, а потом банально но, очевидно, неправильно написанный код давал какие-то советы, когда человек уже допустил ошибки.
    Интервьюер, может, и опытный разработчик, но сидеть и столько времени смотреть в цикл где будет IndexError и просто банально даже не задать наводящий вопрос... Сорри, но мне кажется, ему было просто пофиг на собеседуемого. Второй код написан просто неправильно от слова совсем (даже если не учитывать IndexError), а ведь мужик, используя первоначальную идею (найти первое число, а потом от недостающей суммы отнять его и получить второе), мог добиться правильного результата. Да, интервьюер мог потом попросить найти N пропущенных, и вернулись бы к сортировке, использованию enumerate, но в целом, он бы решил второе задание.

    • @donnydarko5345
      @donnydarko5345 Год назад

      жееесть, я сидел и думал - как бы я это сделал. В голову пришло применить enumerate, потом поставил паузу и полез в комментарии - а тут ты! Неужели я начинаю немножко понимать?

    • @ЕвгенийКрасилов-о9о
      @ЕвгенийКрасилов-о9о Год назад

      ​@@donnydarko5345 Ну там с enumerate тоже есть траблы... Там не тривиально, но примерно так (только тут табуляция в 2 пробела):
      def find_n_missed_numbers(arr, n_missed):
      arr = sorted(arr)
      result, tmp_number = [], 1
      for idx, number in enumerate(arr):
      delta = arr[idx] - tmp_number
      if delta:
      for i in range(delta, 0, -1):
      result.append(arr[idx] - i)

      tmp_number += delta + 1
      result += [arr[-1] + i for i in range(1, n_missed - len(result) + 1)]
      return result
      На разных случаях потестил (что если числа пропущены подряд, что если числа пропущены только в начале, что если числа пропущены только в конце и разные комбинации), вроде правильно.
      P.S. Тут даже enumerate не нужен по сути, я просто сел, думая написать код используя его, но по сути написал код где idx не используется xDD Ладно, не надо ранним утром код писать и позориться, править код не буду что б видели что я тоже облажался =)

    • @mikhail286
      @mikhail286 Год назад

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

    • @stepan_chous
      @stepan_chous 3 месяца назад

      немного не согласен с замечанием в сторону собеседующего. В яндексе на собесах решение задач выглядит так:
      1. дают задачу
      2. обсуждаете условие, задаете вопросы по нему
      3. дальше обсуждается решение, нужно словесно описать идею оптимального алгоритма, после чего предлагается написать код
      4. код пишется самостоятельно, собеседующий не подсказывает, естественно можно задать уточняющие вопросы, но скорее по идее, а не по коду
      5. после того как код написан, очень важно посидеть и подебажить в голове, посмотреть на краевые случаи, найти какие-то ошибки
      6. потом надо сказать волшебное слово типа "готов сдавать" и собеседующий либо говорит, что все верно, либо, что есть ошибка (без указания где)
      7. если ошибку найти не удается, то только тогда интервьюер обращает внимание на конкретные места

    • @ЕвгенийКрасилов-о9о
      @ЕвгенийКрасилов-о9о 3 месяца назад

      ​@@stepan_chousНу это как бы и не собеседование в Яндекс, а просто задача с Яндекса. Ориентируюсь на название видео, потому что пересматривать его не хочется, так что если в видео говорили что полностью промоделируют собес с Яндекса, то неправ.
      4. "Код пишется самостоятельно" и, судя по тому что я написал в своем комменте, то собеседующий увел от собственных размышлений собеседуемого. Так что этот пункт уже не соблюден. Опять же, опираясь только на свои слова, пересматривать не хочу, если я не врал в комменте (а такой привычки за собой не имею), то ... Просто факт - пункт не соблюден.
      5. "Подебажить в голове". А чем дебаггер не подходит? Если в Яндексе не разрешают дебажить, пусть даже на собесах только, то у меня большие вопросы к таким собесам. Может мне ещё в нотпаде код писать? И лсп вообще выключить?
      В общем, их контора, пускай делают как хотят. Просто выглядит это как хреновое собеседование, вот и все, имхо.

  • @raioskristi2575
    @raioskristi2575 Год назад +4

    Совершенно нерабочий код. Во-первых, выход за границы массива. Во-вторых, если эту ошибку устранить, то все равно получим неверные значения 1, 2 вместо 2, 4.

  • @imadna5810
    @imadna5810 11 месяцев назад +4

    Никогда бы не взял типа в красном на работу по софт скилам

  • @Bibliophilos
    @Bibliophilos Год назад +1

    Лайк, лимонад «Колокольчик» и сыр «Дружба».

  • @Sania_666
    @Sania_666 Год назад +2

    А если два числа подрят потеряли?

  • @fighter_civ5408
    @fighter_civ5408 Год назад +27

    Данила такой неприятный :( не знаю почему, такой крутой мужик, а Данила какой-то неприятный

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

    Собеседуемый парень - молодец. И все равно, решил правильно или нет. Главное, что он понимает,, о чемговорит..Это важнее, чем знать... .. Если кандидат все знает, но ничего не понмает, значит это уже не кандидат, ищем другого... Малаец парень...

  • @НиколайВоронин-о7ъ

    Целочисленное деление нужно, чтобы ответ был int. Если "/" то ответ будет float

    • @mikhail286
      @mikhail286 Год назад +2

      Верно - тесты на leetcode float ответ вместо int вообще не примут - интервьюер тут опять куда-то не туда увел. С другой стороны испытуемый должен был отстоять свое решение - видится, что здесь оба поднамутили

    • @mikeofs1304
      @mikeofs1304 Год назад +1

      @@mikhail286 Интервьюер должен был понимать что делает формула, а не заучивать ее наизусть. Он явно формулу зазубрил, а когда его спросили зачем целочисленное , начал троить. вместо того что бы объяснить зачем

  • @lufnex38
    @lufnex38 Год назад +1

    Первая задача в одну строку
    def find(cisla):
    return print([i for i in range(1,max(cisla)+1) if i not in cisla])

    • @mikhail286
      @mikhail286 Год назад +3

      Временная сложность этой строчки O(n2). А если пропущено последнее число, то вообще работать не будет. Возвращать print - это, пожалуй, тоже лишнее).
      Тогда уж так:
      def find(cisla):
      return [i for i in range(1, len(cisla)+2) if i not in set(cisla)]
      Время O(n), память O(n)

    • @lufnex38
      @lufnex38 Год назад

      ​@@mikhail286 спасибо, буду знать

    • @mikeofs1304
      @mikeofs1304 Год назад

      @@mikhail286 Это не чистый O(n), потому что поиск в множестве, п офакту произойдет n раз, и хоть он и реализован лучше простого прохода, он все равно зависит от размера множества.

    • @mikhail286
      @mikhail286 Год назад

      def find(cisla):
      cisla = set(cisla)
      return [i for i in range(1, len(cisla)+2) if i not in cisla]

    • @irystonifyrt
      @irystonifyrt Год назад

      return int((((len(list) + 1) * ((len(list) + 1) + 1)) / 2) - sum(list)) Если решать как в видео

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

    Прикольная задача, я первый вариант долго решал, а второй чет быстро подошло, а потом еще и обратносовместил (еще не досмотрел видос мб он также сделал)
    # k - это сколько эл-тов мы удалили
    def findMissedNums(nums, k):
    st = set(nums)
    prevLen = len(st)
    mx = max(st)
    ans = ""
    if mx != len(nums) + k:
    return mx + k
    for n in range(1, mx):
    st.add(mx - n)
    if len(st) > prevLen:
    ans += str(mx - n) + " "
    prevLen = len(st)
    return ans
    lst = [1,2,4,6,7]
    k = 2
    print(l)
    print(findMissedNums(lst, k))

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

      память 0(n)
      скорость 0(n)

  • @НикитаСмирнов-п5п
    @НикитаСмирнов-п5п Год назад +1

    Не уверен, что кто-то предложил в комментариях это решение, поэтому предложу его я. Задача, найти два числа, отсутствующие в перемешанном массиве натуральных чисел в количестве n.
    1) Сортируем массив (сложность O(nLog n))
    2) С помощью алгоритма бинарного поиска ищем первое число, на каждой итерации проверяем if arr[i] - i == 1 and arr[i-1] == i - 1 - тогда arr[i] и будет искомым числом. Здесь следует добавить условие для избежания выхода за пределы массива или чуть получше продумать этот пункт. (сложность O(log n))
    3) Теперь, когда нам известно первое число, вычисляем сумму чисел от 1 до n + 2 и вычитаем из нее первое число.
    Судя по всему, это решение также не самое эффективное, в интернете можно найти решение с помощью XOR за О(n).

    • @mikhail286
      @mikhail286 Год назад +1

      Во-первых, раз нашли первое число бинарным поиском, второе число тоже ничего не мешает найти так же - зачем скатываться до O(n) при поиске второго?
      Во-вторых, общая сложность алгоритма считается по наихудшему его шагу, поэтому, если мы имеем O(nlog(n)) после сортировки, то уже без разницы, что мы используем дальше O(log(n)) или O(n) - это уже ничего не изменит.

  • @jen24499
    @jen24499 Год назад +2

    def finder(x):
    max_n = max(x) + 1
    res = [i for i in range(1, max_n) if i not in x]
    if not res:
    return [max_n, max_n + 1]
    elif len(res) >= 2:
    return res
    return res + [max_n]

    • @cristianglodeanu2329
      @cristianglodeanu2329 Год назад

      Нада вернуть 2 числа, + тот кто дал задание не указал рвзмер массива, может перкбор O(n) не сработать

    • @Proborder
      @Proborder Год назад +1

      Усложняешь.

    • @jen24499
      @jen24499 Год назад

      @@cristianglodeanu2329 Хз, я дальше 11 минуты не смотрел, он там сказал, что надо найти пропущенное число, я нашел

    • @jen24499
      @jen24499 Год назад

      @@cristianglodeanu2329 Не, это не работает

    • @maxnmx4544
      @maxnmx4544 Год назад +1

      Это О(n*n)

  • @Brahmanity
    @Brahmanity Год назад +3

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

    • @AndyPronin
      @AndyPronin  Год назад

      А ограничение по памяти?

    • @Brahmanity
      @Brahmanity Год назад

      @@AndyPronin ах вон оно как, понял

  • @abogdanov
    @abogdanov 2 месяца назад

    Но решение второй задачи ведь не будет работать если пропущена единица Почему тогда Данила сказал что оно рабочее? А у Максима интересное мышление - он сразу предлагает сложные варианты а простые не может дать

  • @ДмитрийЖданов-ю5т

    If I+1dic[i] then miss1=I+1 break if I+1+miss1dic[i+miss1] then miss2=miss1+I+1 break. Все. В один проход.

  • @alexkorvin2541
    @alexkorvin2541 Год назад +1

    Я новичек, подскажите на сколько гуд мое решение? Суть такая что в сортированном списке каждое следующее число больше предыдущего на 1,значит если число больше предыдущего больше чем на 1 то между ними как раз и прячется потерянное число .
    def found_num(chisla):
    j = 0
    for i in sorted(chisla):
    if i > j + 1:
    return (i-1)
    j = i

    • @janek4024
      @janek4024 Год назад

      какие chisla? это питон или кумир?

  • @tamerlanhalilov
    @tamerlanhalilov Год назад

    Нашел самое сложное (и по времени, и по памяти) решение этой задачи в истории:
    def find_missing_numbers(arr):
    lenarr = len(arr) + 2
    realarr = []
    for i in range(1, lenarr + 1):
    realarr.append(i)
    return sorted(list(set(realarr).difference(set(arr))))

  • @seoonlyRU
    @seoonlyRU Год назад +2

    лайк от СЕООНЛИ

  • @dinrash7613
    @dinrash7613 11 месяцев назад

    Не расмотрели если одно или оба числа в начале: 1 и 2

  • @takiekakmi7532
    @takiekakmi7532 Год назад +1

    А можно мидловский собес по алго секции?😇 Хотя может и там будут задачки на применение хэшмап или xor🤔

    • @AndyPronin
      @AndyPronin  Год назад +3

      Можно и мидловый)

    • @albrehtdurer557
      @albrehtdurer557 Год назад

      прочитал, как алко секции😁

  • @ЕвгенийК-м5к
    @ЕвгенийК-м5к Год назад

    А где можно почитать про формулы в первой задачке? Воспроизвел пример, в итоге функция всего лишь находит элемент n+1, больший n на 1. А если не последний элемент удалится, тогда это решение не подходит.

    • @AndyPronin
      @AndyPronin  Год назад

      Попробуй сначала с помощью sum решить. Потом принцип Гаусса погугли. Очень прикольная история, как он придумал суммировать числа в последовательности

  • @Konstantin_Stalnov
    @Konstantin_Stalnov Год назад +1

    Поправьте меня, если я неправ, но похоже в собесе разговор о Натуральных числах, а не о Целых?

    • @aaaaaaaalesha
      @aaaaaaaalesha Год назад

      Любое натуральное число является целым, так что противоречий нет

  • @бесполезный-м1б
    @бесполезный-м1б Год назад

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

    • @MassEffecn
      @MassEffecn 10 месяцев назад

      Тут проверяют знания алгоритмов, а не то как ты будешь писать код который будут поддерживать джуны после курсов.
      Если заморочится и порешать задачки алгоритмические, хотя бы базовые, набить руку, то можно сильно увеличить производительность своего приложения.
      Но как показывает практика, когда в код залетают алгоритмы, а у того кто его потом сапортит нет базы, хотя бы математической, то часто летит нытье уровня - что за идиот это писал, ничего не понятно. вот я бы сейчас тут дернул filter().sort().reduce() и все станет супер просто и понятно. а по факту все было просто и понятно, но незнайка сделал по свойму и положил фпс счетчик своего приложения

  • @MrChernoslav
    @MrChernoslav 6 месяцев назад

    Первая задача ксорами решается понятно, как. Про вторую не понял, за линейную скорость как найти. Пока решил "в лоб"
    def find_one_lost(ar):
    x = len(ar) ^ (len(ar) + 1)
    for i in range(len(ar)):
    x ^= ar[i]
    x ^= i
    return x
    def find_two_lost(ar):
    one, two = 1, 1
    for i in range(len(ar)):
    if i in ar:
    continue
    one = i
    two = find_one_lost(ar + [one])
    return one, two

  • @АйдарДжумагулов
    @АйдарДжумагулов 7 месяцев назад

    Ну у меня что-то такое получилось:
    def find_miss_int(array: List[int]):
    true_len = len(array)
    final_len = true_len + 1
    s = final_len * (final_len + 1) // 2
    return s - sum(array)
    def find_miss_two_int(array: List[int]):
    first_miss = 0
    sorted_array = sorted(array)
    for i in range(len(sorted_array)):
    number = i + 1
    number_in_array = sorted_array[i]
    if number_in_array != number:
    first_miss = number
    array.append(first_miss)
    break
    second_miss = find_miss_int(array)
    return first_miss, second_miss

  • @ЕвгенийЗеленов-р9и

    Здравствуйте, Андрей. Подскажите, можно ли попасть к вам на интервью. Если да, то куда написать?

    • @AndyPronin
      @AndyPronin  Год назад

      Прямо сейчас попасть можно только через акселерацию ЯндексПрактикума для студентов (Максим, например, так попал).
      . Если буду искать людей со стороны -- то тут t.me/RUclipsPronin Недавно отбирал в пет-проект людей. Собесы с ними пока под замком, но открою

  • @MrAdAmGaMeS
    @MrAdAmGaMeS Год назад

    А если просто массив в сет перегнать и по нему циклом пройтись , сложность О(n)

  • @idensas
    @idensas Год назад

    Как насчет такого решения второй задачи? Я так понимаю, оно O(n). Не ошибся ли где-то я?
    __________________________________
    def two_are_missed(arr):
    ln = len(arr) + 2
    diff = ln*(ln+1)/2 - sum(arr)
    for i in range(1, len(arr) + 1):
    if i not in arr:
    return i, diff - i
    return i + 1, i + 2
    print(two_are_missed([1,2,4])) # ---> (3, 5)

    • @idensas
      @idensas Год назад

      Или даже так, в худшем случае придется проитерироваться n/2 раз. В предыдущем варианте было n раз.
      ___________________
      def two_are_missed(arr):
      ln = len(arr) + 2
      diff = ln*(ln+1)/2 - sum(arr)
      for i in range(1, round(diff/2)+1):
      if i not in arr:
      return i, diff-i

    • @ЕвгенийКрасилов-о9о
      @ЕвгенийКрасилов-о9о Год назад +2

      Каждый раз когда ты пишешь value {in | not in} array помни, что ты запускаешь цикл-поиск по всему массиву, который, собственно O(n). Поэтому, если ты пользуешься данной конструкцией внутри другого O(n) цикла, то твой алгоритм превращается в O(n^2). Но в целом, да, код правильный, обидно что собеседуемый хотел точно такую же идею использовать, но интервьюер почему-то сказал что это бессмысленно .......

  • @Surf391711
    @Surf391711 Год назад

    def lost_number(sequence: list[int]) -> int:
    sortseq = [None]*(len(sequence)+1)
    for i in sequence:
    sortseq[i-1] = i
    res = [i for i, val in enumerate(sortseq, 1) if val is None]
    return res[0]

  • @TimStep-le4ii
    @TimStep-le4ii Год назад +1

    множества не подходят?

  • @irystonifyrt
    @irystonifyrt Год назад

    Оцените мое решение первой задачи
    def find(list: list) -> int:
    c = 0
    for i in range(1, len(list) + 1):
    for num in list:
    if i == num:
    c = 1
    break
    if c == 0:
    return i
    return len(list) + 1

    • @ali-boom
      @ali-boom Год назад

      n в квадрате

  • @lordnn
    @lordnn Год назад

    Может dig2 = i + 2 ??

  • @Bibliophilos
    @Bibliophilos Год назад

    Добрый и злой полицейский-рекрутер 😂

    • @maxnmx4544
      @maxnmx4544 Год назад

      Они оба добрые

    • @Bibliophilos
      @Bibliophilos Год назад

      @@maxnmx4544 да, Андрей забавно сыграл просто, когда разрядил обстановку.

  • @Surf391711
    @Surf391711 Год назад +2

    Мои решения для одного и для двух (и более) чисел:
    def lost_number(sequence: list[int]) -> int:
    mx = 0
    res = set()
    for s in sequence:
    mx = s if s > mx else mx
    res.add(s)
    res = set(range(1, mx + 1)) - res
    return list(res)[0] if len(res) == 1 else None
    def lost_number2(sequence: list[int]) -> int:
    res = []
    diff = 1
    for key, val in enumerate(sorted(sequence)):
    if val - key != diff:
    res.append(val-1)
    diff = val - key
    return res

  • @denispatrakhin
    @denispatrakhin Год назад

    Вторая задачкас временным ограничением классная, спасибо!
    def missing_two_nums(nums: list) -> (int, int):
    """
    O(n) time complexity.
    O(1) memory complexity.
    """
    all_gen = range(1, len(nums) + 3)
    sum_two = sum(all_gen) - sum(nums)
    xsum_two = reduce(lambda x, y: x ^ y, all_gen) ^ reduce(lambda x, y: x ^ y, nums)
    for num in all_gen:
    if num ^ xsum_two == sum_two - num:
    return num, sum_two - num

  • @aleksandrneklyudov9956
    @aleksandrneklyudov9956 Год назад +3

    Без Данилы пожалуйста в след раз

  • @Ramakot666
    @Ramakot666 Год назад +1

    def find_miss_number(arr, n):
    expected_sum = sum(range(1, n+1))
    actual_sum = sum(arr)
    return expected_sum - actual_sum

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

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

  • @Damir8100
    @Damir8100 Год назад

    я я так ее решил .
    def miss(arr):
    return sum(range(1,len(arr)+2))-sum(arr)

  • @Ybuotue
    @Ybuotue Год назад +2

    Вот смотришь, думаешь, ну как так можно тупить. А когда там оказываешься, тупишь ещё хлеще))
    Есть какие-нибудь таблетки от этого?)

    • @maxnmx4544
      @maxnmx4544 Год назад

      Нет.. это я я как пример

    • @AndyPronin
      @AndyPronin  Год назад +4

      Да. Постигается упражнениями. Первый раз адреналин и не можешь вспомнить своё имя. Потом проще. Для этого такие собесы и делаем. Танк. Граната. Новобранец.

    • @Самара-з6б
      @Самара-з6б Год назад

      а если хочешь как лучше. А в итоге тупишь как перед как перед экзаменом. Я честно все учил, но сейчас не помню? Хотя бы есть такие примеры что отлично. Хорошие видео чтобы показать и порешать те вопросы которые возникают. Спасибо.

  • @vladrybin8847
    @vladrybin8847 Год назад +6

    А теперь вопросы к Яндексу и тем кто любит такие алгоритмические вопросы 1) где в жизни, а точнее в приложении может понадобиться знание суммы арифметической прогрессии 2) как часто в работе разработчика он будет использовать это знание с нуля, без библиотеки.

    • @TheRunnerSVO
      @TheRunnerSVO Год назад

      Пригодиться для прокачки твоих нейронных связей. Для прокачки твоих скилов. И, если ты хочешь в FANG или MANG или как там нашу называет, то придется принять правила игры. Это объективная реальность. или ты принимаешь правила игры, или создаешь свою реальность

    • @АндрейЕвдокимов-ъ1м
      @АндрейЕвдокимов-ъ1м Год назад +1

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

    • @vitaliyzhabinskiy8425
      @vitaliyzhabinskiy8425 Год назад +4

      Судя по последним действиям Яндекс, то им отрастить нужно не только нейронные связи. А еще у этих умников уходит код в общий доступ, ну прям супер гении, зато человека мучают со знанием суммы арифметической прогрессии. У них код из под носа увели, а они умничают.

    • @jewgenijmoldawski3306
      @jewgenijmoldawski3306 Год назад

      Нут так вроде и не было задано решать через формулу Гаусса. Я бы, например, не догадался и решал бы в лоб "вычеркиваниями". А тут человек заработал плюс.

  • @cam_4o_kak
    @cam_4o_kak Год назад

    делюсь своим решением
    arr= [1, 2, 5,6,7, ]
    z2=[]
    def find(arr):
    n=10
    z=1
    for i in arr:
    while i!=z:
    z2.append(z)
    z+=1
    z += 1
    while n > z:
    z2.append(z)
    z+=1
    find(arr)
    print(z2)

  • @IldarNasyrov-g5p
    @IldarNasyrov-g5p Год назад

    множества отдыхают…..

  • @yaizminska
    @yaizminska Год назад

    А почему вариант с for - это квадратичная сложность? Вложенного же подцикла нет😮

    • @aaaaaaaalesha
      @aaaaaaaalesha Год назад +2

      Поиск элемента в массиве == линейное время. Вложенный цикл есть по сути, если понимать, как работает in в вашей структуре данных

  • @cristianglodeanu2329
    @cristianglodeanu2329 Год назад +1

    Тяжело в учении, легко в бою, волнение берет свое .. , задача то лёгкая, на 7 8 киу

    • @maxnmx4544
      @maxnmx4544 Год назад +1

      Сам не ожидал

  • @nerdizay
    @nerdizay Год назад +9

    очередная антиреклама яндекс практикуму

    • @archimg1221
      @archimg1221 Год назад

      Не вижу антирекламы.
      Алгоритмы нужно знать, или хотя бы понимать как к ним логически прийти.
      Вряд ли какой-либо общий курс может впихнуть в голову кучу алгоритмов и логическое мышление. Это должно приходить в процессе самообразования

    • @AndyPronin
      @AndyPronin  Год назад +3

      @@archimg1221 скорее, нарешенность нужна

    • @ЕвгенийКрасилов-о9о
      @ЕвгенийКрасилов-о9о Год назад +1

      @@archimg1221 Чувак, ты хотя бы проверял второй код? А стоило бы...

    • @nerdizay
      @nerdizay Год назад +1

      @@archimg1221 Только у меня претензия была не к алгоритмам, а то что он с самого начала высчитывал сумму значений исходного массива, а использует при этом длину массива, которая названа real_arr, что вообще неочевидно, плюс код пришлось бы переписывать если бы массив начинался не с единицы (в отсортированном виде)
      Как я понял он имел ввиду что-то типа такого: раз в ряду 1,2,3,4 1-ый + последний = 2-ой + предпоследний, то чтобы узнать сумму элементов можно поделить кол-во элементов на 2 и умножить на такое значение, т.е. на сумму первого и последнего, последний элемент как раз и будет равен real_arr, то есть длине массива, получается:(first+last)*(length/2) но учитывая что first = 1 a last = length Он записал: (1+length)*length/2 что вооооообще непоняяяятно

    • @nerdizay
      @nerdizay Год назад

      @@archimg1221 И в четности поэтому запуатался, потому что может быть 1,2,3,4,5 только вот он оперирует длиной массива и строка у него a * (a + 1) которая не может быть нечетной по причине того что если a - четное, то (a + 1) - нечетное, и наоборот, то есть всегда умножаем четное на нечетное.. в таком случае всегда четное будет

  • @somepatt
    @somepatt Год назад

    def find_num(arr):
    s = 0
    for i in range(1, len(arr) + 1):
    s += i - arr[i - 1]
    s += i + 1
    return s

  • @Vjqifg
    @Vjqifg 6 месяцев назад

    def find_miss(lst: list):
    cur_lst = sorted(lst).copy()
    ret_lst = []
    for i in range(1, len(cur_lst)):
    if cur_lst[i-1]+1 != cur_lst[i]:
    ret_lst.append(cur_lst[i-1]+1)
    return ret_lst