Найти кратчайшие подмассивы A[0:L], B[0:L], где M различных элементов в A больше, чем M различных элементов в B (временнC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Найти кратчайшие подмассивы A[0:L], B[0:L], где M различных элементов в A больше, чем M различных элементов в B (временн

Сообщение Anonymous »

Мне нужно найти минимальный подмассив размера L, A[0:L], B[0:L] такой, чтобы в A было M различных элементов, которые больше, чем M различных элементов в B. Например, A > B[j] засчитывается, но я не могу снова использовать A или B[j]. Кроме того, подмассивы должны начинаться с начала массива.
Домашнее задание касается AVLTrees и Heap, поэтому я думаю, что решение будет включать один из них (для примера ниже я использовал Priority_queue из stl но на самом деле мне не разрешено использовать какой-либо контейнер из любой библиотеки, поэтому у меня уже есть реализация минимальной кучи, но для простоты понимания я использовал эквивалент stl). Также ожидается, что я решу вопрос, используя AVL Tree или Heap.
Ps. Я обнаружил, что массивы могут содержать повторяющиеся элементы.
Размеры A и B одинаковы, то есть: N.
Мне нужно найти решение, имеющее временную сложность O(N * logN * logM)

Код: Выделить всё

#include 
#include 
#include 

int minLenOfSubarrays(std::span aArr, std::span bArr, int M)
{
const int N = aArr.size();
int count = 0;
int L = 0;

int left = M;
int right = N;
while(left  b.top()){
count++;
a.pop();
b.pop();
}
else{
a.pop();
}
}
if(count >= M){
L = mid;
right = mid-1;
}
else{
left = mid+1;
}
}
return L;
}

int main(int argc, char* argv[]){

int aArr[] = {2,4,10,6,1,11};
int bArr[] = {3,5,8,9,7,12};
int M = 3;

std::cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/79139213/find-shortest-subarrays-a0l-b0l-where-m-different-elements-in-a-are-bigge[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»