Как в Rust эффективно проверять вхождение индекса (usize) во множество

диапазонов? Диапазоны представлены множеством из Vec<usize>, входные индексы получаются при итерации с помощью enumerate.

11 ответов

5 просмотров

если диапазоны не пересекаются и отсортированы - бинарный поиск, я думаю. остальное - нужно больше информации

Aleksandr-Antonov Автор вопроса
Alexey Ermakov
если диапазоны не пересекаются и отсортированы - б...

Диапазоны отсортированы, но к сожалению пересекаются, и их число ограничено только объёмом оперативной памяти. На входе вектор элементов, диапазоны представлены структурой из имени и вектора Vec<usize>, являются ответами внешнего API. Задача состоит в том, чтобы в один проход по вектору элементов применить логику, параметрами которой является имя диапазона и элемент входного вектора. При этом нужно пройти в том числе по элементам, индексы которых не вошли ни в один диапазон.

Aleksandr Antonov
Диапазоны отсортированы, но к сожалению пересекают...

не очень понимаю как представлены диапазоны типа vec![1, 2, 3], vec![4, 5, 6]?

Aleksandr-Antonov Автор вопроса

struct Range { name: String, range: Vec<usize> } let ranges: Vec<Range>; Диапазон это вектор индексов элементов входного массива, да.

Aleksandr Antonov
struct Range { name: String, range: Vec<usize>...

может быть range вида vec![1, 2, 5]?

Aleksandr-Antonov Автор вопроса
Алиса Королёва
может быть range вида vec![1, 2, 5]?

Нет, я возможно дал некорректное название, но диапазон это именно вектор индексов, где 0 это первый элемент входного вектора.

Aleksandr Antonov
struct Range { name: String, range: Vec<usize>...

То есть на входе могут быть: let range1 = vec![1, 2, 3, 5]; let range2 = vec![3, 4, 6, 7]; И искомый элемент 3, то быстрее чем m*log(n) никак.

Пашечка
То есть на входе могут быть: let range1 = vec![1...

А, или ты именно такие дубли и хочешь найти?

Aleksandr-Antonov Автор вопроса
Пашечка
То есть на входе могут быть: let range1 = vec![1...

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

Aleksandr Antonov
3 не является искомым элементом. Задача состоит в ...

То есть тебе дали на вход число, например "3" и ты его ищешь в каждом векторе с индексами (которые называешь "диапазонами")? Или я совсем не понимаю задачи

Aleksandr-Antonov Автор вопроса
Пашечка
То есть тебе дали на вход число, например "3" и ты...

Есть входной вектор элементов и вектор векторов индексов, которые возвращает микросервис фильтрации. Нужно эффективно обойти входной вектор элементов, к тем из них, индекс которых имеется в векторах индексов, применить логику, и пойти далее.

Похожие вопросы

Обсуждают сегодня

а что делать если тебя убивают на картах?
Yarik yarik kyda ti lezesh
43
Мне вот что интересно, кто на рфе стартовал/играл, что вы фармили, в каком виде контента он прямо хорош? Экспедиция? Вроде прямо на замазанных мапах рф сдувается
Владислав
20
Подскажите где можно прочитать про реализацию возможности писать человеку при подписке на телеграм канал от имени бота? Было бы не плохо если для Telegraf@3.38.0
Pan Lipton
10
Всем привет, может уже кто-то пытался выдернуть из api информацию о дате рождения пользователя Есть ли вообще такая возможность?
Artem Stormageddon
2
‌/r/pathofexile moderation changes top scoring links : pathofexile (RSS) Hi, everyone. On behalf of the subreddit mod team, I’m here to give you a few updates on the subreddi...
Esionru
3
У меня вопрос к знающими, стоит ли вступать в гильдии в игре или лучше полная свобода?
Енот Полоскун
17
У вас бывает ощущение, что хочется потратить весь отпуск на то, чтоб только спать?
Николай
15
Как можно настроить фильтр в пое под себя?
Yarik yarik kyda ti lezesh
15
Ребята, я за проф советом😅 По микросервисам. В монолите есть общие файлы для сервисов: фетчи, конфиги, либы, утилсы.. как при распиле правильно их поддерживать? Пока вариант д...
Александр Тарасюк
1
Кто нибудь поясните это всё таки вброс или да? Про санктум слышал на поедб вбросили, а по дурке откуда инфа и на сколько это вообще правда? Пахнет шизофренией какой-то ✅Divi...
Dmitry Ritter
9
Карта сайта