in reply to printing largest hash value
Why not just do the simple way:
my %hash = ( red => 2, pink => 1, orange => 4, black => 3, blue => 4 ); my ($max, @maxKeys); for (keys %hash) { $max = $hash{$_} unless $max; if ($hash{$_} > $max) { @maxKeys = ($_); $max = $hash{$_}; } elsif ($hash{$_} == $max) { push @maxKeys, $_; } } print "$_: $hash{$_}\n" for @maxKeys;
This will only touch each value once, which is necessary anyway for this type of problem, giving you a O(N) solution.
Update: My bad, didn't see the part about printing the keys and values, so I have updated my code accordingly.
|
---|
In Section
Seekers of Perl Wisdom