Найдите максимальный элемент через std::max_element и отдельно обработайте пустой вектор. Возвращать 0 по умолчанию неверно: все элементы могут быть отрицательными.
Нахождение наибольшего числа в векторе
Найдите максимальный элемент через std::max_element и отдельно обработайте пустой вектор. Возвращать 0 по умолчанию неверно: все элементы могут быть отрицательными.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Составьте функцию findMaximum, принимающую константную ссылку на std::vector<int> и возвращающую максимальное значение из переданного контейнера.
int findMaximum(const std::vector<int>& data)
{
// реализовать
}
Ответ
Найдите максимальный элемент через std::max_element и отдельно обработайте пустой вектор. Возвращать 0 по умолчанию неверно: все элементы могут быть отрицательными.
#include <algorithm>
#include <stdexcept>
#include <vector>
int findMaximum(const std::vector<int>& data) {
if (data.empty()) throw std::invalid_argument("empty vector");
return *std::max_element(data.begin(), data.end());
}
Контракт здесь использует исключение при отсутствии результата. Если исключения нежелательны, можно изменить тип возврата на optional. Поиск выполняется за O(n) времени с O(1) дополнительной памятью и не меняет входной вектор.