array inhalt vergleichen...

murphs_law

Grünschnabel
hi,
ich hab wieder so ein dummes problem. z.B.
@array = (1, 2, 2, 3, 4, 5 , 5 ,5);

ich möchte das meine Ausgabe fünf lautet denn ich habe ja fünf gleiche zahlen im array stehen bzw. 2 x 2 und 3 x 5. soweit kann ich das auch noch nur, sowie ich das gelöst habe, ist es sehr langsam und das sollte es nicht sein. gibts ne schnellere möglichkeit als meine?

foreach my $value (@array) {
$result{$value}++;
}

foreach $value (keys(%result)) {
if ($result{$value} > 1) {

$doubles = $doubles + $result{$value};
}
else{
print"negative";
}
}
 
Mir fällt jetzt spontan keine andere Lösung ein...

Aber wie groß ist denn bitte dein Array mit den Zahlen, das dir bei der Lösung die Geschichte zu lange dauert?
 
hmm, das differiert. der array momentan, hat ungefähr 64000 sechs-stellige Zahlen. ich muss einige csv files auswerten die teilweise bis zu 70000 Zeilen haben und da wollte ich das eventuell etwas effizienter und schneller gestalten. trotzdem danke.
 
Hallo!

Wenn dein array sortiert (das obige sieht sortiert aus) ist kannst du das so lösen :

$last = $array[0]+1;
$double = 0;

foreach my $value (@array) {
if ($value==$last) { $double++; }
$last = $value;

}

Gruß Frank
 

Neue Beiträge

Zurück