Решаю Python задачи с собеседований (Google, Avito)

Поділитися
Вставка
  • Опубліковано 15 лис 2024

КОМЕНТАРІ • 60

  • @antonavdeev5670
    @antonavdeev5670 3 місяці тому

    По поводу использования eval, кстати)) Запиши видос с решением задачи на CodeWars. Название задачи: "Evaluate mathematical expression". Я скидываю ее всем любителям eval и exec )) Будь даже этот видос на час или два, я обещаю, что посмотрю его от начала и до конца и даже подпишусь на канал) Только реши задачу)

  • @skyplayer5718
    @skyplayer5718 4 місяці тому +1

    Увидел твой канал в рекомендациях. Мне понравились твои идеи решения. Формат крутой, снимай побольше похожих видео. Лайк поставил и подписался)

  • @8-Artem-8
    @8-Artem-8 4 місяці тому +1

    А можно пару глупых вопросов,
    1 - зачем в if писать == 0 или == 1, если len(arr)%2 вернет 0 или 1, а это уже будет или False или True?
    2 - а как часто в продакшене используется eval?
    3 - во втором задании у нас массив с 4 знаками, можно было бы проходить по цифрам и делать % 4, чтобы не создавать i_op?

    • @itgirl_luda
      @itgirl_luda  4 місяці тому

      1. Написала для наглядности
      2. Ни разу не использовала)
      3. Можно

    • @8-Artem-8
      @8-Artem-8 4 місяці тому

      Понял, спасибо большое.

    • @БорисОстроумов-т7к
      @БорисОстроумов-т7к 4 місяці тому

      а Вы не видите ее уровень? Прошу, не пиши никакие курсы только, не порть жизнь людям. Я после Гоши Дударя так много усилий тратил на переучивание людей

  • @Кайрат-з8ц
    @Кайрат-з8ц 3 місяці тому

    Побольше видео такого формата, очень классно!👍🏻

  • @kirilllossev7849
    @kirilllossev7849 4 місяці тому +3

    Круто! Мне зашло! Снимай побольше такие видосы

    • @itgirl_luda
      @itgirl_luda  4 місяці тому +1

      Класс, спасибо за фитбек!

  • @imadna5810
    @imadna5810 3 місяці тому

    Нужно учитывать BigO при решении или просто нужно хоть как-то решить ?

    • @itgirl_luda
      @itgirl_luda  3 місяці тому

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

  • @Roman6577
    @Roman6577 4 місяці тому +1

    Люда, молодец! Спасибо тебе за твои труды, видосов с решение различные задач на питоне с твоим участием хотелось бы больше!

    • @itgirl_luda
      @itgirl_luda  4 місяці тому +1

      Спасибо, приняла в сведения)

  • @AlexanderOsnovnoi
    @AlexanderOsnovnoi 4 місяці тому +5

    Используя eval всегда ходишь по "скользкой дорожке" в безопасности

    • @itgirl_luda
      @itgirl_luda  4 місяці тому

      Точно, нужно будет учесть

    • @juzosuzuya9297
      @juzosuzuya9297 4 місяці тому

      ​@@itgirl_ludaпривет а у тебя какой стэк

  • @sergeygulyaev3674
    @sergeygulyaev3674 4 місяці тому +1

    формат супер! лайк шер
    продолжай!

    • @itgirl_luda
      @itgirl_luda  4 місяці тому +1

      Класс спасибо 🙏

  • @orkutt203
    @orkutt203 4 місяці тому

    Формат отличный! Такого точно нужно больше)

  • @Top100-j6u
    @Top100-j6u 4 місяці тому

    В 1 задаче я думаю подразумевалось сделать сортировку вставками(Insertion Sort), т.к она работает за О(n), а встроенный метод сортировки в Python за O(n log n)

    • @itgirl_luda
      @itgirl_luda  3 місяці тому

      Точно, хорошее замечание)

    • @suhanoves
      @suhanoves 2 місяці тому

      Сортировка вставками работает за O(n^2)

    • @Top100-j6u
      @Top100-j6u 2 місяці тому

      @@suhanovesа точно, тогда можно использовать сортировку слиянием О(n logn)

  • @apollonriabov6029
    @apollonriabov6029 4 місяці тому +1

    Интересный новый формат👍

  • @apollonriabov6029
    @apollonriabov6029 4 місяці тому +1

    Ура новый видосик

  • @IvanYugov
    @IvanYugov 4 місяці тому

    Правильно ли я понял, что такая крупная компания, как Avito, требует от соискателя найти медиану тривиальным прямым методом с помощью сортировки за O(N*log(N))? Решение с вызовом метода и парой условий достаточно, а вещи типа QuickSelect не требуются, так?

    • @itgirl_luda
      @itgirl_luda  4 місяці тому

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

    • @itgirl_luda
      @itgirl_luda  4 місяці тому

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

    • @krv76
      @krv76 4 місяці тому +1

      Тут тонкий момент. Т.к. это питон, то быстрое решение за O(N) почти наверняка окажется медленнее медленного решения за O(N log N).
      Видимо правильным для питона решением будет return statistics.median(arr) - но это решение обычно доказывает умение гуглить

    • @IvanYugov
      @IvanYugov 4 місяці тому

      @@krv76 Чтобы решение за O(N) наверняка оказывалось медленнее решения за O(N*log(N)) на том же самом языке программирования, даже если это Python, - это что-то новое в теории алгоритмов.

    • @krv76
      @krv76 4 місяці тому

      @@IvanYugov
      import statistics
      import random
      from datetime import datetime
      a = list(range(1000000))
      random.shuffle(a)
      base = datetime.now()
      print(statistics.median(a))
      print("С помощью statistics.median медиана найдена за ", datetime.now() - base)
      def quickselect_median(l, pivot_fn=random.choice):
      if len(l) % 2 == 1:
      return quickselect(l, len(l) / 2, pivot_fn)
      else:
      return 0.5 * (quickselect(l, len(l) / 2 - 1, pivot_fn) +
      quickselect(l, len(l) / 2, pivot_fn))
      def quickselect(l, k, pivot_fn):
      """
      Выбираем k-тый элемент в списке l (с нулевой базой)
      :param l: список числовых данных
      :param k: индекс
      :param pivot_fn: функция выбора pivot, по умолчанию выбирает случайно
      :return: k-тый элемент l
      """
      if len(l) == 1:
      assert k == 0
      return l[0]
      pivot = pivot_fn(l)
      lows = [el for el in l if el < pivot]
      highs = [el for el in l if el > pivot]
      pivots = [el for el in l if el == pivot]
      if k < len(lows):
      return quickselect(lows, k, pivot_fn)
      elif k < len(lows) + len(pivots):
      # Нам повезло и мы угадали медиану
      return pivots[0]
      else:
      return quickselect(highs, k - len(lows) - len(pivots), pivot_fn)
      base = datetime.now()
      print(quickselect_median(a))
      print("С помощью quickselect_median медиана найдена за ", datetime.now() - base)
      base = datetime.now()
      a.sort()
      print((a[500000] + a[499999])/2)
      print("С помощью sort медиана найдена за ", datetime.now() - base)

  • @dunapologetic
    @dunapologetic 4 місяці тому

    классные сервис. видео интересное, спасибо

  • @antonavdeev5670
    @antonavdeev5670 3 місяці тому

    Ммм.. Мутируем входные данные. Ай-ай-ай

  • @FeelUs
    @FeelUs 4 місяці тому

    Я тут недавно подумал для вычисления медианы, что если взять алгоритм для qsort и сделать чтобы он не сортировал ненужные участки, то сложность будет O(n) а не O(n*log n). Но это в среднем, а худшем случае у qsort сложность O(n^2)...

  • @k7ego
    @k7ego 4 місяці тому

    молодец, успехов

  • @ПлатонПлатонов-ш9т
    @ПлатонПлатонов-ш9т 4 місяці тому

    Ментану можно за линию находить

    • @itgirl_luda
      @itgirl_luda  4 місяці тому

      Как и все впринципе в питоне)

    • @widny31
      @widny31 4 місяці тому

      ​@@itgirl_luda питон сводит сложность любого алгоритма к O(n)?

  • @БорисОстроумов-т7к
    @БорисОстроумов-т7к 4 місяці тому +2

    Эти задачи не уровень гугла, это уровень 4 класса школы. До решения задач уровня собеседования гугла Вам практики еще лет на 7-8. Постоянно смотрите на клавиатуру... Здесь явно очень слабенький уровень)

    • @itgirl_luda
      @itgirl_luda  4 місяці тому

      Аххаха, так и есть) в Гугле же вообще в уме код пишут, не используя клавиатуру)

    • @БорисОстроумов-т7к
      @БорисОстроумов-т7к 4 місяці тому

      @@itgirl_luda слепая печать вам не знакома? Обучитесь. Пальцы должны бегать по клавиатуре без какого-либо взгляда на неё. пианисты играют на пианино и не смотрят на клавиши, так и здесь. Скорость печати возрастает в среднем в 3-4 раза
      Также изучите пепы питона, чтобы писать код в соответствии с рекомендациями. Уровень трейни на видео с натяжкой, как будто программирование изучаете последние 2-3 недели. Если это так, то ничего страшного

    • @FeelUs
      @FeelUs 4 місяці тому

      Уровень задач - да, то что человек смотрит на клавиатуру - не показатель

    • @lightgod4669
      @lightgod4669 3 місяці тому

      ​@@itgirl_ludaтролли , на них даже внимание не стоит обращать

    • @НиколайБардаков-б5щ
      @НиколайБардаков-б5щ 3 місяці тому

      А ты в гугл работаешь?

  • @Alp-pt7hf
    @Alp-pt7hf 3 місяці тому

    Вторую задачу решать через eval - это хак, медленный и не работает в толпе языков.
    На собеседовании это бы не прокатило.
    Надо честно строить обратную польскую запись и по ней вычислять.

    • @itgirl_luda
      @itgirl_luda  3 місяці тому

      Поняла, больше не буду🙏

  • @shoucko
    @shoucko 4 місяці тому

    первая задачка легкая. В уме решил (ответ не 😮смотрел)
    Пустой список можно и без условия проверить: можно воспользоваться функцией try - expect