一、题目
二、一些思考
其实是一道很简单的题,但我很丢人的错了很多次,一定要避免陷阱啊。
首先来看数据规模,题中告诉我们“ 测量数据的绝对值<=1000,0000 ”,意味着我们计算中位数时,最边缘的可能也就是存储一个2000,0000,是远远不会超过int整型的最大值的。
上图是int整型最大值与题中数据规模的最大值。
ps.我没有用float来存储中位数,是因为一个奇数除以2,只能是X.5。所以我觉得我这样写更方便。
三、代码
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] arr = new int[n];
for(int i=0;i<n;i++)
arr[i]=sc.nextInt();
int big,small;
if(arr[0] > arr[n-1]){
big = arr[0];
small = arr[n-1];
}else{
big = arr[n-1];
small = arr[0];
}
System.out.print(big+" ");
//输出中位数
if(n%2 == 0){//个数为偶
int temp = arr[n/2] + arr[(n/2)-1];
if(temp%2 == 0)
System.out.print(temp/2+" ");
else
System.out.print(temp/2+".5 ");
}else{//个数为奇
System.out.print(arr[n/2]+" ");
}
System.out.print(small);
}
}