@Radia

Как определить количество повторяющихся элементов в массиве?

Нужно найти количество повторяющихся элементов в массиве. Ко мне в голову доходит только перебор через условие...
  • Вопрос задан
  • 1221 просмотр
Решения вопроса 1
gbg
@gbg Куратор тега C++
Любые ответы на любые вопросы
Увы, это только так и работает (для общего случая строк). Если вам можно использовать stl, задействуйте std::map примерно таким образом

std::vector<std::map<char, size_t>> maps(strings.size());

size_t nmax = 0;
size_t fmax = 0;

for(size_t i=0;i<strings.size();++i)
{
    for(const auto& j:strings[i])
    {
        const size_t current = ++maps[i][j];
        if(current>fmax)
        {
            fmax=current;
            nmax=i;
        }
    }
}

//теперь в nmax у нас номер строки с максимально частым повторением
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
std::vector<int> row = ...;
std::unordered_map<int, size_t> counts;
for (int x : row) ++counts[x];
size_t n_duplicates = row.size();
for (auto p : counts) {
  if (p.second == 1) --n_duplicates;
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы