Нам нужно заменить максимальные элементы (максимальные элементы - это одинаковые элементы с максимальным значением в векторе) минимальным.
Как наиболее проще это сделать?
Для начала нам нужно найти минимальный и максимальный элементы. Сразу отбрасываем варианты со всякими поисками минимумов / максимумов и вспоминаем о сортировке. Для удобства - по возрастанию, так как нам не нужно проходить весь вектор до конца. После сортировки максимальные элементы будут вначале.
Итак, мы отсортировали вектор, максимальные элементы вначале, а минимальный - в конце. Описываем цикл:
for (int i = 0, temp = arr[i]; i < arr.size(); ++i)
Здесь стоит пояснить: i - итератор, это понятно, temp же - целочисленная переменная, с начала цикла хранящая элемент вектора под индексом 0: arr[0], то есть максимальный элемент.
Внутри цикла мы проверяем, является ли i-й элемент максимальным, то есть, по сути, проходим все максимальные элементы с самого начала:
if (arr[i] == temp)
{
arr[i] = arr[arr.size() - 1];
}
Здесь arr[arr.size() - 1] - всегда минимальный элемент.
Answers & Comments
Первым делом нужно выяснить общность вопроса.
Нам нужно заменить максимальные элементы (максимальные элементы - это одинаковые элементы с максимальным значением в векторе) минимальным.
Как наиболее проще это сделать?
Для начала нам нужно найти минимальный и максимальный элементы. Сразу отбрасываем варианты со всякими поисками минимумов / максимумов и вспоминаем о сортировке. Для удобства - по возрастанию, так как нам не нужно проходить весь вектор до конца. После сортировки максимальные элементы будут вначале.
Итак, мы отсортировали вектор, максимальные элементы вначале, а минимальный - в конце. Описываем цикл:
Здесь стоит пояснить: i - итератор, это понятно, temp же - целочисленная переменная, с начала цикла хранящая элемент вектора под индексом 0: arr[0], то есть максимальный элемент.
Внутри цикла мы проверяем, является ли i-й элемент максимальным, то есть, по сути, проходим все максимальные элементы с самого начала:
Здесь arr[arr.size() - 1] - всегда минимальный элемент.
Рассмотрим на примере
Вектор после ввода 7 элементов: -1, 0, 8, -1, 8, 6, 4.
После сортировки: 8, 8, 6, 4, 0, -1, -1
Начало цикла:
i = 0: temp = arr[i] = arr[0] = 8
arr[0] == temp? ⇒ 8 == 8? true ⇒ arr[0] = arr[7 - 1] = -1
i = 1: temp = 8
arr[1] == temp? ⇒ 8 == 8? true ⇒ arr[1] = arr[7 - 1] = -1
i = 2: temp = 8
arr[2] == temp? ⇒ 6 == 8? false ⇒ выход из цикла
Вектор в конце: -1 -1 6 4 0 -1 -1
Код на языке C++