华为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();
    }
}
相关推荐
考虑考虑3 小时前
Mybatis实现批量插入
java·后端·mybatis
咖啡八杯4 小时前
GoF设计模式——中介者模式
java·后端·spring·设计模式
青石路7 小时前
记一次多JDK版本问题的排查,一坑套一坑,差点没爬上来
java
先吃饱再说9 小时前
判断回文字符串,从一行代码到双指针优化
算法
像我这样帅的人丶你还10 小时前
Java 后端详解(五):Redis 缓存
java·后端·全栈
黄敬峰12 小时前
深入理解算法核心:从递归思想、数组扁平化到快速排序
算法
plainGeekDev12 小时前
GreenDAO → Room
android·java·kotlin
得物技术13 小时前
从狂野代码到按目标生产:得物推荐 AI Harness 的工程化实践|AICon 演讲整理
人工智能·算法·架构
AI小老六16 小时前
SkillOpt 架构拆解:把 Skill 文本当参数,用执行轨迹训练 Agent
后端·算法·ai编程