用perl实现,得到一个数组中重复次数最多的元素

写一个子程序,数组作为参数,子程序返回数组中重复次数最多的那个元素,如果有两个元素并列最高,就返回两个值... 写一个子程序,数组作为参数,子程序返回数组中重复次数最多的那个元素,如果有两个元素并列最高,就返回两个值 展开
 我来答
qmg1023
2013-11-07 · TA获得超过888个赞
知道小有建树答主
回答量:804
采纳率:0%
帮助的人:895万
展开全部

代码我试了是可以的,没有采用返回,而是用打印的方式输出的


sub getmaxocc
{
($input)=@_;
for(@$input)
{
$occ{$_} +=1;
}
$maxocc = (sort {$b <=> $a} values %occ)[0];
while(my($k,$v)=each%occ){
if($v == $maxocc )
{
print "$k ";
}
}
}
getmaxocc( [1,2,2,3,3,3,4,4,4] );
百度网友c9e795dda
推荐于2016-07-07 · TA获得超过5167个赞
知道大有可为答主
回答量:1128
采纳率:0%
帮助的人:1138万
展开全部

如果有 3 个或以上呢 ?

sub getMax {
    my (%temp, $max, @ret);
    foreach ( @_ ) {
        my $count = $temp{$_}++;
        $max = $count if $count > $max; 
    }
    foreach ( keys %temp ) {
        push @ret, $_ if $temp{$_} == $max
    }    
    return @ret;
}

print getMax ( split //, "aaabbccedffcfffghiabc" )
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式