小工具知识网

当前位置: 首页 > 行业知识 > 华为OD机试C卷-- 最大N个数与最小N个数的和(Java & JS & Python)

行业知识

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

2026-11-12 00:40:26 来源:互联网转载

获取题库不需要订阅专栏,可直接私信我进入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算法源码

上一篇:JavaScript极速入门(1)

下一篇:HTML分页效果实战教程,轻松打造吸引人的分页功能!