Для определения, имеются ли в массиве одинаковые элементы, можно пройти по всем элементам массива и сравнивать их с остальными элементами. Нахождение наиболее часто встречающегося элемента можно реализовать с помощью счетчика и хэш-таблицы.
Вот пример решения задачи на языке программирования C++:
#include <iostream> #include <unordered_map> #include <vector> bool hasDuplicates(const std::vector<int>& arr) { std::unordered_map<int, int> counts; for (int num : arr) { // Заполняем хэш-таблицу, считая количество каждого элемента массива counts[num]++; // Если нашлось более одного повторяющегося элемента, возвращаем true if (counts[num] > 1) { return true; } } return false; } int mostFrequentElement(const std::vector<int>& arr) { std::unordered_map<int, int> counts; int maxCount = 0; int mostFrequent = arr[0]; for (int num : arr) { // Заполняем хэш-таблицу, считая количество каждого элемента массива counts[num]++; // Обновляем значение наиболее часто встречающегося элемента, если нашли элемент с большим количеством встреч if (counts[num] > maxCount) { maxCount = counts[num]; mostFrequent = num; } } return mostFrequent; } int main() { std::vector<int> arr = {1, 2, 3, 4, 5, 2, 3}; if (hasDuplicates(arr)) { std::cout << "Массив содержит повторяющиеся элементыn"; } else { std::cout << "Массив не содержит повторяющиеся элементыn"; } int mostFrequent = mostFrequentElement(arr); std::cout << "Наиболее часто встречающийся элемент: " << mostFrequent << std::endl; return 0; }
В этом коде мы используем хэш-таблицу (unordered_map) для хранения количества встреч каждого числа в массиве.
Функция hasDuplicates
проходит по всем элементам массива и заполняет хэш-таблицу, увеличивая соответствующий счетчик. Если находится элемент, для которого значение счетчика больше 1, значит, в массиве есть повторяющиеся элементы, и функция возвращает true
.
Функция mostFrequentElement
также заполняет хэш-таблицу, считая количество встреч каждого числа, но вместо проверки на наличие повторяющихся элементов, она ищет наиболее часто встречающийся элемент, обновляя значение переменных maxCount
и mostFrequent
при необходимости. В конце функция возвращает наиболее часто встречающийся элемент.
После выполнения этих функций мы выводим информацию о наличии повторяющихся элементов в массиве и выводим наиболее часто встречающийся элемент.
В приведенном примере входной массив [1, 2, 3, 4, 5, 2, 3]
содержит повторяющиеся элементы (числа 2 и 3), поэтому функция hasDuplicates
вернет true
. Наиболее часто встречающийся элемент - 2, поэтому функция mostFrequentElement
вернет 2.