2012-08-29 2 views
2

Puis-je trouver l'élément majoritaire uniquement en entrée de lecture sans ajout à un tableau? Mon code ne fonctionne pas à grande entrée, avec une grande différence de nombres.Rechercher l'élément majoritaire à partir de l'entrée

Je trouve mon erreur. Il code correct:

int n = Integer.parseInt(bin.readLine()); // read number of data 
int h = 0; //input data 
int count = 1; //counter 
int lf = 0; // last top counting 
int first = 0; // top counter num 

for (int x = 0; x < n; x++) { 
    lf = h; 
    h = Integer.parseInt(bin.readLine());//read input number 
    if (x == 0) { 
     first = h; 
    } 
    if (h == first) { 
     count++; 
    } else { 
     count--; 
    } 
    if (count == 0) { 
     first = lf; 
     count = 1; 
    } 
+2

Comment appelez-vous un élément majoritaire? Ce code semble compter combien de fois le premier élément se produit dans l'entrée. – Qnan

+1

Votre code devrait fonctionner quel que soit le nombre d'entrées. Que voulez-vous dire par "ne fonctionne pas"? –

+0

Quand j'ai entré plus de 100 000 numéros, ça donne une mauvaise réponse. – Vlad

Répondre

1

Grande entrée ne doit pas causer de problèmes, vous venez de supposer que le problème est quand il a échoué sur (a) gros fichier (s?).

Le code ressemble plus ou moins OK, mais IIRC vous si le compteur atteint zéro, vous devez choisir (= mettre first à une nouvelle valeur) le élément suivant, et non le précédent.

Questions connexes