Jak zbadać czy istnieje wartość dominująca w tablicy?

0

Potrzebuję dowiedzieć się czy wartość w tablicy jest dominująca to znaczy że więcej niż połowa elementów tablicy jest jej równa.
#Na zbiorze nie mogę wykonywać żadnych operacji arytmetycznych czy porównywać elementów relacją porządku.
#Mogę jedynie stwierdzać czy są one sobie równe.
Czy zna ktoś jakieś algorytmy, podobno takie już istnieją jednak nie mogę ich znaleźć. Za każdą podpowiedź będę wdzięczny.

2
#include <iostream>
#include <array>
#include <map>

int main()
{
    const std::size_t SIZE{ 9 };
    std::array<int, SIZE> nums{ 3,3,1,2,1,3,1,3,3 }; //tablica jakiś wartości

    // wypełnimy std::map wartościami z tablicy nums
    // w ten sposób sprawdzimy ile razy każda liczba występuje
    std::map<int, int> domin;
    for (int i = 0; i < nums.size(); ++i) {
        domin[nums[i]]++;
    }

    // szukamy maksymalnej liczby wystąpień
    auto max = domin.cbegin();
    for (auto cit = std::next(domin.cbegin()); cit != domin.cend(); ++cit) {
        if (cit->second > max->second)
            max = cit;
    }

    // jeśli liczba wystąpień jest większa niż połowa rozmiaru tablicy nums
    if (max->second> nums.size() / 2) {
        // wypisz liczbę dominującą
        std::cout << "liczba " << max->first << " jest wartoscia dominujaca\n";
    }
    else {
        std::cout << "w tablicy nie ma liczby dominujacej\n";
    }
} 
0

Dziękuję znalazłem jeszcze kilka http://www.geeksforgeeks.org/majority-element/

1 użytkowników online, w tym zalogowanych: 0, gości: 1