Нужна помощь, чтобы преобразовать «найти k-й наименьший из двух отсортированных массивов» в «k-й самый большой» ⇐ C++
-
Anonymous
Нужна помощь, чтобы преобразовать «найти k-й наименьший из двух отсортированных массивов» в «k-й самый большой»
У меня есть код на C++, который находит k-й наименьший элемент двух отсортированных массивов за время O(log(m * n)). Я знаю, что это не самое оптимальное решение, и знаю, что его можно решить за O(log(min(m, n))), однако меня это пока не интересует.
Я хочу преобразовать эту функцию, чтобы она вместо этого возвращала k-й по величине элемент, и я изо всех сил пытаюсь заставить ее работать. Должно быть, нужно тщательно подправить некоторые сравнения здесь и там, но мне не удалось заставить это работать. Могу ли я получить здесь некоторую помощь?
#include #include #include #include #include использование пространства имен std; // скорость: O(log( m * n) )) // пробел: O(1) intsolveKthSmallest(vector& A, вектор& B, int k, int aStart, int aEnd, int bStart, int bEnd) { std::cout
У меня есть код на C++, который находит k-й наименьший элемент двух отсортированных массивов за время O(log(m * n)). Я знаю, что это не самое оптимальное решение, и знаю, что его можно решить за O(log(min(m, n))), однако меня это пока не интересует.
Я хочу преобразовать эту функцию, чтобы она вместо этого возвращала k-й по величине элемент, и я изо всех сил пытаюсь заставить ее работать. Должно быть, нужно тщательно подправить некоторые сравнения здесь и там, но мне не удалось заставить это работать. Могу ли я получить здесь некоторую помощь?
#include #include #include #include #include использование пространства имен std; // скорость: O(log( m * n) )) // пробел: O(1) intsolveKthSmallest(vector& A, вектор& B, int k, int aStart, int aEnd, int bStart, int bEnd) { std::cout
Мобильная версия