Например. Массив: {1, 5, 2, 3, 2, 10}
Диапазон: 0-1 Ответ: 5 Диапазон: 2-4 Ответ: 3 Диапазон: 0-5 Ответ: 10 и т. Д.
Например. Массив: {1, 5, 2, 3, 2, 10}
Диапазон: 0-1 Ответ: 5 Диапазон: 2-4 Ответ: 3 Диапазон: 0-5 Ответ: 10 и т. Д.
Если массив не отсортирован, то сделать то, что вы просите, невозможно.
Чтобы найти максимум, вам нужно по крайней мере проверить все элементы в диапазоне, что занимает O (n).
Если вы разрешите некоторую форму предварительной обработки данных, это легко. Вы можете просто построить поисковую таблицу n 2 с ответами. Тогда вы сможете найти максимум для любого диапазона за постоянное время.
Это невозможно. Придется посетить каждый элемент.
Если ваш массив отсортирован априори, то это операция O (1).
См. Также здесь: Как лучше всего получить минимальное или максимальное значение из массива чисел?
Как отмечали другие, это невозможно
@ Даниэль Таламас, если я правильно вас понял, вы этого хотели:
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int maxlement(int range1,int range2) {
std::vector<int> v{ 1, 5, 2, 3, 2, 10 };
std::vector<int>::iterator result;
result = std::max_element(v.begin()+range1, v.begin()+range2+1);
int dist = std::distance(v.begin(), result);
return v[dist];
}
int main() {
int range1,range2;
cout<<"From ";
cin>>range1;
cout<<"To ";
cin>>range2;
cout<<"Max Element Is "<<maxlement(range1,range2);
return 0;
}
:)
- person sbi   schedule 27.02.2012