/**
* 给定一个数组,编写一个函数来计算它的最大N个数与最小N个数的和。你需要对数组进行去重。
说明:
*数组中数字范围[0, 1000]
*最大N个数与最小N个数不能有重叠,如有重叠,输入非法返回-1
*输入非法返回-1
*/
public class OD3 {
public static int getSum(int[] arr,int n) {
int sum = 0;
int[] bits = new int[1001];
int maxcount = n;
int mincount = n;
// 从小到大排序
Arrays.sort(arr);
for (int i = 0; i < arr.length; i++) {
if(bits[arr[i]] != 1&&maxcount>0){
bits[arr[i]] = 1;
sum += arr[i];
maxcount--;
}
if(bits[arr[arr.length - 1 - i]] != 1&&mincount>0){
bits[arr.length - 1 - i] = 1;
sum += arr[arr.length - 1 - i];
mincount--;
}
}
return sum;
}
public static void main(String[] args) {
OD3 od3 = new OD3();
int sum = od3.getSum(new int[]{1, 1, 2, 3, 4, 5}, 2);
System.out.println(sum);
}
}
OD算法之最大最小N个数的和
发布于 2024-11-18 23 次阅读
Comments NOTHING