23 最大N个数与最小N个数的和
2023-12-13 10:23:26
题目描述
给定一个数组,编写一个函数来计算它的最大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
输入?? ?32342?? ?
2
输出?? ?-1?? ?
说明?? ?最大2个数[4,3],最小2个数[3,2],有重叠输出为-1。
import java.util.Arrays;
import java.util.HashSet;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int m = sc.nextInt();
int[] arr = new int[m];
for (int i = 0; i < m; i++) {
arr[i] = sc.nextInt();
}
int n = sc.nextInt();
System.out.println(getResult(m, arr, n));
}
public static int getResult(int m, int[] arr, int n) {
HashSet<Integer> set = new HashSet<>();
for (int val : arr) {
if (val < 0 || val > 1000) return -1;
set.add(val);
}
if (set.size() < n * 2) return -1;
Integer[] distinct_arr = set.toArray(new Integer[0]);
Arrays.sort(distinct_arr, (a, b) -> a - b);
int l = 0;
int r = distinct_arr.length - 1;
int ans = 0;
while (n > 0) {
ans += distinct_arr[l] + distinct_arr[r];
l++;
r--;
n--;
}
return ans;
}
}
文章来源:https://blog.csdn.net/u012545581/article/details/134861280
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!