华为OD机试统一考试D卷C卷 - 最大N个数与最小N个数的和
题目描述
给定一个数组,编写一个函数来计算它的最大N个数与最小N个数的和。你需要对数组进行去重。
说明:
- 数组中数字范围[0, 1000]
- 最大N个数与最小N个数不能有重叠,如有**重叠,输入非法**返回-1
- 输入非法返回-1
输入描述
- 第一行输入M, M标识数组大小
- 第二行输入M个数,标识数组内容
- 第三行输入N,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 |
说明 |
最大2个数[4,3],最小2个数[3,2], 有重叠输出为-1。 |
Java
import java.util.*; public class Main { public static int getSumOfMaxAndMinN(int size, int[] nums, int n) { Set<Integer> numSet = new HashSet<>(); // 使用HashSet去重 // 将数组中的数字插入到集合中,同时判断数字是否符合要求 for (int i = 0; i < size; i++) { if (nums[i] < 0 || nums[i] > 1000) return -1; // 不符合要求,返回-1 numSet.add(nu
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
2024华为OD机试E卷D卷题 文章被收录于专栏
本专栏给大家提供了华为2024最新华为OD(D)卷的题目汇总。华为OD机试刷题记录机考算法题库,帮助你上岸华为。提供C++/Java、JavaScript、Python四种语言的解法。