题目
给定一个数组,编写一个函数来计算它的最大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。
代码
def calculate_max_min_sum

该博客介绍了如何使用Python解决华为在线开发者(OD)机试中的一道算法题,要求计算给定数组去重后最大N个数和最小N个数的和,确保无重叠。解题思路包括数组去重、判断输入合法性、排序及检查重叠。
订阅专栏 解锁全文
126

被折叠的 条评论
为什么被折叠?



