Чтобы найти количество элементов с максимальным значением в массиве за один проход, мы можем использовать следующий алгоритм:
Инициализация: Начнем с двух переменных — одной для хранения текущего максимального значения (max_value
), и другой для подсчета количества элементов, равных этому максимальному значению (count
). Изначально max_value
можно установить на минимально возможное значение (например, -∞
), а count
на 0.
Проход по массиву: Пройдем по каждому элементу массива и для каждого элемента выполним следующие шаги:
- Если текущий элемент больше
max_value
, обновим max_value
этим элементом и установим count
в 1, так как мы нашли новый максимальный элемент.
- Если текущий элемент равен
max_value
, увеличиваем count
на 1, так как нашли еще один элемент, равный текущему максимальному значению.
Результат: По завершении прохода по массиву переменная count
будет содержать количество элементов, равных максимальному значению.
Вот пример на Python:
# Ввод массива с клавиатуры
array = list(map(int, input("Введите элементы массива через пробел: ").split()))
# Инициализация
max_value = float('-inf')
count = 0
# Однопроходный алгоритм
for num in array:
if num > max_value:
max_value = num
count = 1
elif num == max_value:
count += 1
# Вывод результата
print(f"Максимальное значение: {max_value}")
print(f"Количество элементов с максимальным значением: {count}")
Объяснение кода:
list(map(int, input().split()))
считывает строку чисел, разделённых пробелами, преобразует их в целые числа и сохраняет в список array
.
- Мы инициализируем
max_value
как -inf
, что гарантирует, что первый элемент массива станет новым максимальным значением.
- Перебираем каждый элемент массива. Если текущий элемент больше
max_value
, обновляем max_value
и сбрасываем count
на 1. Если же элемент равен max_value
, просто увеличиваем count
.
- По завершении цикла выводим
max_value
и count
, что даёт нам максимальное значение в массиве и количество таких элементов соответственно.
Этот подход эффективен, так как требует всего один проход по массиву, что соответствует линейной сложности O(n), где n — количество элементов в массиве.