给定一个数组
编写一个函数
来计算他的最大N个数和最小N个数的和
需要对数组进行去重
说明
第一行输入M
M表示数组大小
第二行输入M个数
表示数组内容
第三行输入N表示需要计算的最大最小N的个数
输出描述
输出最大N个数和最小N个数的和
例一:
输入
5
95 88 83 64 100
2
输出
342
说明
最大2个数[100 95] 最小2个数[83 64]
输出342
例二
输入
5
3 2 3 4 2
2
输出
-1
说明
最大两个数是[4 3]最小2个数是[3 2]
有重叠输出为-1
<?php
$m=trim(fgets(STDIN));
$arr=explode(' ',trim(fgets(STDIN)));
$n=trim(fgets(STDIN));
solution($arr,$n);
function solution($arr,$n)
{
$arr=array_unique($arr);
if(count($arr)>=2*$n){//去重后2倍的n个数一定不重复
sort($arr);
$max_arr=[];
$min_arr=[];
for ($i=0;$i<$n;$i++){
$min_arr[]=$arr[$i];
}
for ($j=count($arr)-1;$j>count($arr)-1-$n;$j--){
$max_arr[]=$arr[$j];
}
echo array_sum($min_arr)+array_sum($max_arr);
return;
}
echo -1;
}
function solution1($arr,$n){
$arr=array_unique($arr);
$res=-1;
if(count($arr)>2*$n){
sort($arr);
for ($i=0;$i<count($arr);$i++){
if($i<$n||$i>count($arr)-$n-1){
$res+=$arr[$i];
}
}
}
echo $res;
}