Порридж В Ко-ливинге
Sergei
Хз, этот первый канал русскоязычный, где нет токсичности и комфортно
Порридж В Ко-ливинге
Viktor
https://www.youtube.com/watch?v=ib8TQLmHuWA Мне кажется или Вегед уже почти Дон Карлеоне? 😃
Viktor
Ya.Talks в прямом эфире сейчас.
Viktor
Это, конечно, всё прикольно, но с нормальной офлайновой конференцией не сравнить. Но это было очевидно.
Порридж В Ко-ливинге
Сразу видно, кто пишет 90% кода в команде
Viktor
Мне интересно было, как дела у компании у Олега Бунина. Он же только конференциями занимается. Вышел с ним подкаст, любопытно рассказывал. Спойлер: все плохо, но один хрен надо продолжать работать, и адаптироваться.
Viktor
Как я и думал, прикол конференции в том, чтобы пообщаться в кулуарах и на афтепати. Онлайн это сложно сделать.
Viktor
Порридж В Ко-ливинге
К разговору о том, что Ютюб рекламирует надурилово:
https://t.me/durov_russia/23
Viktor
Viktor
Где чудо-схемы заработка «рекламирует Дуров».
Viktor
Это ж полная ересь!
Порридж В Ко-ливинге
Никакого увадения к людям живущих в России и никакой реакции от властей.
Порридж В Ко-ливинге
Как говорил Гуриев "... это как считать, что россияне - людьми второго сорта. Это откровенный расизм."
Dmitry
Всем привет! А как вот такое решать? https://leetcode.com/discuss/interview-question/948062/Amazon-or-OA-2020-or-Fetch-Items-to-display . Если вкратце то надо реализовать пагинацию. То есть есть массив объектов, тебе говорят какую страницу вернуть, сколько строк на странице и по какому полю сортировать
Dmitry
В комментах только брут форс решения с обычной сортировкой. Такое решается как то более эффективно?
Viktor
Что тут можно придумать хитрее?
Viktor
Ну аккуратно надо реализовать последнюю страницу.
Dmitry
Если честно, не до конца понял твой алгоритм ))
Viktor
кажется, что быстрее n * log n, где n размер порции, и не сделать — сортировать все равно придётся.
Viktor
Если честно, не до конца понял твой алгоритм ))
я правильно понял, что просят? есть полный список товаров. на вход получаем номер страницы, размер порции и поле для сортировки, надо вернуть отсортированный список товаров на нужной странице?
Dmitry
Да
Dmitry
ну предположим у нас 1000 товаров и по 10 на странице, нам просят показать условно 5ую страницу
Viktor
Да
тогда предлагаю решать так. по номеру страницы и размеру порции вычисляем откуда рисовать, т.е. первый элемент, за O(1), типа startIndex = portionSize * (pageNum - 1) (плюс надо обработать последнюю страницу, чтобы за границу не выйти). далее делаем слайс исходного массива (слайс — значит не копируем сами объекты, а только ссылки на них), сортируем по указанному полю. всё.
Viktor
типичная задачка для нью града
Viktor
позаботиться нужно о том, чтобы сортировка была стабильной, для этого нужно знать как работает сортировка в твоем языке.
Viktor
ничего хитрее чем n * log n, кажется, не придумать. т.е. как так отсортировать, чтобы не сортировать, не ясно.
Dmitry
Я просто чуть иначе задачу понимаю
Viktor
и не ясно зачем. вряд ли на странице по смыслу много элементов.
Dmitry
Я так понимаю тебе надо отсортировать весь массив то есть 1000 элементов. И потом сделать слайс
Viktor
Viktor
лишняя работа
Dmitry
Что то я не вкуриваю)) Представь у тебя каталог товаров на сайте, ты сортируешь товары по цене
Viktor
а, кажется, я понял. чтобы получить нужную страницу в соответствии со сквозной сортировкой.
Dmitry
Ну да
Viktor
тогда прекалк. делаем по поисковому индексу для каждого поля по которому сортировать надо.
Dmitry
Конкретно в этой задаче только 1 запрос будет, то есть прекалк не особо нужен
Viktor
минус в том, что обновляется список товаров, надо и индексы пересчитывать.
Dmitry
вопрос в том, можно ли не сортировать весь массив
Dmitry
ну вот у меня такой есть набросок
Dmitry
Типичная задача на найти top K элементов в массиве можно решить через метод partition (который из quicksort)
Dmitry
https://leetcode.com/problems/top-k-frequent-elements/solution/
Dmitry
quickselect, тут в solution способ номер 2
Viktor
мне нравится. партишенинг наше все.
Dmitry
Да, идея в том, что нам нужно элементы по позиции 40-50 допустим. Мы находим все элементы 0-40 с помощью quickselect и 0-50 с помощью quickselect и потом вычитаем множества
Dmitry
или например находим 0-40 и 40-end и пересекаем множества
Dmitry
Ну это только мой набросок, звучит мега геморно))
Viktor
Viktor
всяко лучше, чем весь список сортировать.
Dmitry
Ну да, я вот и решил узнать, мб есть какие то еще способы
Dmitry
Просто для БД это типичный механизм limit offset order by и вряд ли он целиком ворочает огромные таблицы
Viktor
типа std::partition и всё
Viktor
мне кажетя в БД будут индексы, тот самый прекалк
Dmitry
Да, кстати, дерево возможно вполне эффективно это решит
Dmitry
у амазона на OA жесткие time limit? такая задача пройдет если полную сортировку всего массива делать?
Viktor
вообще не жесткие. кажется, что и брутфорсы пройдут. но там надо писать «как решал и оценить сложность», это кто-то читает по идее.
Viktor
так что есть вероятность, что забреют если совсем втупую делать.
Viktor
Dmitry
Ладно, в целом спасибо за подсказки )
Viktor
Viktor
@alexeyten прислал мне просто замечательный коммент к сегодняшней задаче на adventofcode — https://twitter.com/alexeyten/status/1335291295116521472
Viktor
вот что значит «нормальный программист», который мыслит в двоичной системе 😄
Roman
Viktor
Яндекс.Почта в надёжный руках 🔥
Иван
👍👍
TheHesoyam
Evgeniy