Найти максимальный элемент в массиве, который имеет минимальную позицию

Как я могу найти максимальное значение в векторе, который имеет минимальную позицию?

Например, если у меня есть вектор v[5] = {2,2,1,1,1} выход будет v[0],

0

Решение

Идиоматический способ сделать это будет использовать std::max_element. Это возвращает итератор к самому большому элементу:

#include <algorithm> // for std::max_element
#include <iterator>  // for std::begin, std::end
#include <iostream>

int main()
{
v[5] = {2,2,1,1,1};
auto it = std::max_element(std::begin(v), std::end(v));
std::cout << *it << std::endl;
}

Если вам нужен индекс элемента, вы можете использовать std::distance:

 std::cout << "index " << std::distance(std::begin(v), it) << std::endl;
2

Другие решения

Найти максимальное значение в массиве от конца массива для реализации за один проход

0

Вот как вы можете сделать это в своем собственном цикле:

if(!v.size()) return -1;
int maxValue = v[0], maxPosition = 0;
for(int i = 1; i < v.size(); i++) {
if(v[i] > maxValue) maxValue = v[maxPosition = i];
}
return maxPosition;

Если вы хотите получить последний максимум максимума, просто измените if(v[i] > maxValue) в if(v[i] >= maxValue) или измените цикл, чтобы работать обратно на фронт.

0
По вопросам рекламы [email protected]