华为od(D卷)最大N个数和最小N个数的和

文章目录

题目描述

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

输入描述

第一行输入M,M表示数组大小

第二行输入M个数,表示数组内容

第三行输入N表示需要计算的最大最小N的个数

输出描述

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

示例1

输入

5

95 88 83 64 100

2
输出

342
说明:最大2个数[100 95] 最小2个数[83 64],输出342

示例2

输入

5

3 2 3 4 2

2
输出

-1

说明:最大两个数是[4 3]最小2个数是[3 2],有重叠输出为-1

思路

去重 : 利用set
最大,最小 : 排序。

排序+去重:TreeSet

代码

复制代码
public class Demo02 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNextInt()) {
            TreeSet<Integer> treeSet = new TreeSet<>();
            int m = in.nextInt();
            for (int i = 0; i < m; i++) {
                treeSet.add(in.nextInt());
            }
            int n = in.nextInt();

            if (treeSet.size() < 2 * n) {
                System.out.println(-1);
                return;
            }
            int sum = 0;

            for (int i = 0; i < n; i++) {
                sum += treeSet.first();
                treeSet.remove(treeSet.first());
                sum += treeSet.last();
                treeSet.remove(treeSet.last());
            }
            System.out.println(sum);
        }

        in.close();
    }
}
相关推荐
皮皮林5511 小时前
拒绝写重复代码,试试这套开源的 SpringBoot 组件,效率翻倍~
java·spring boot
归去_来兮3 小时前
拉格朗日插值算法原理及简单示例
算法·数据分析·拉格朗日插值
顺风尿一寸5 小时前
从 Java NIO poll 到 Linux 内核 poll:一次系统调用的完整旅程
java
程途知微5 小时前
JVM运行时数据区各区域作用与溢出原理
java
华仔啊7 小时前
为啥不用 MP 的 saveOrUpdateBatch?MySQL 一条 SQL 批量增改才是最优解
java·后端
千寻girling9 小时前
Python 是用来做 AI 人工智能 的 , 不适合开发 Web 网站 | 《Web框架》
人工智能·后端·算法
xiaoye20189 小时前
Lettuce连接模型、命令执行、Pipeline 浅析
java
颜酱12 小时前
一步步实现字符串计算器:从「转整数」到「带括号与优化」
javascript·后端·算法
beata12 小时前
Java基础-18:Java开发中的常用设计模式:深入解析与实战应用
java·后端
Seven9713 小时前
剑指offer-81、⼆叉搜索树的最近公共祖先
java