题目
给定一个数组,编写一个函数来计算它的最大N个数与最小N个数的和。你需要对数组进行去重。
说明:
- 数组中数字范围[0, 1000]
- 最大N个数与最小N个数不能有重叠,如有重叠,输入非法返回-1
- 输入非法返回-1
输入描述
第一行输入M, M标识数组大小
第二行输入M个数,标识数组内容
第三行输入N,N表达需要计算的最大、最小N个数
输出描述
输出最大N个数与最小N个数的和
用例
输入
5
1 2 3 4 5
2
输出
12
说明 最大2个数[4,5],最小2个数[1,2], 输出为12。
解题思路
首先对输入的数组去重,然后检查去重后的数组长度是否小于 2 * N,如果是则返回-1。否则,将去重后的数组进行排序,取出最小的N个数和最大的N个数,检查这些数是否有重叠。如果没有重叠,则计算这些数的和并返回,否则返回-1。
代码