华为OD机试C卷-- 最大N个数与最小N个数的和(Java & JS & Python)

飞码创造者 2024-06-22 15:05:38 阅读 55

获取题库不需要订阅专栏,可直接私信我进入CSDN领军人物top1博主的华为OD交流圈观看完整题库、最新面试实况、考试报告等内容以及大佬一对一答疑。

题目描述

给定一个数组,编写一个函数来计算它的最大N个数与最小N个数的和。你需要对数组进行去重。

说明:

数组中数字范围[0, 1000] 最大N个数与最小N个数不能有重叠,如有重叠,输入非法返回-1 输入非法返回-1

输入描述

第一行输入M, M标识数组大小 第二行输入M个数,标识数组内容 第三行输入N,N表达需要计算的最大、最小N个数

输出描述

输出最大N个数与最小N个数的和

题目解析

题目要求给定一个数组,计算并返回数组中不重复的最大N个数与最小N个数的和。首先,我们需要对数组进行去重,然后分别找到数组中的最大N个数和最小N个数。需要注意的是,这两个集合不能有重叠,如果有重叠则输入非法,返回-1。

算法步骤

1.读取数组大小和数组内容。

2.读取需要计算的最大、最小N个数。

3.对数组进行去重。

4.找出去重后数组中的最大N个数和最小N个数(这里我们使用优先队列(最小堆和最大堆)来分别存储最大和最小的N个数)。

5.检查这两个集合是否有重叠。

6.如果没有重叠,计算并返回它们的和;如果有重叠或输入非法,则返回-1。

Java算法源码

<



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。