随机删除一元素后集合数组的中位数
输入:
第一行,一个数字n(0 <= 200000)
第二行,输入n个数字,第 i 个数字表示 ai ,ai 在32位整数范围内。
输出:
输出n行,第 i 行表示删除 ai 后,剩下的 n-1 个元素的中位数。
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
public class Midian {
public static void main(String[] args) {
//接收输入
Scanner in = new Scanner(System.in);
int n = in.nextInt();
List<Integer> list = new ArrayList<>();
int temp = 0;
for(int i=0;i<n;i++){
list.add(in.nextInt());
}
//排序
Collections.sort(list);
for(int j=0;j<n;j++){
//将list第j个元素暂存
temp = list.get(j);
list.remove(j);
System.out.println(midian(list));
list.add(temp,j);
//下次循环开始前将其恢复到原位置
}
}
public static int midian(List<Integer> list){
int ans ;
int size = list.size();
//长度为偶数
if(list.size() % 2 == 0) {
ans = (list.get(size / 2 - 1) +list.get(size / 2)) / 2;
}
//长度为奇数
else {
ans = list.get(size / 2);
}
return ans;
}