华为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%内容,订阅专栏后可继续查看/也可单篇购买

华为OD机试刷题 文章被收录于专栏

华为OD机试刷题记录机考算法题库,帮助你上岸华为。提供C++/Java、JavaScript、Python四种语言的解法。

全部评论

相关推荐

头像 头像
05-04 23:09
C++
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务