基本思路:排序之后求相邻元素的差值的最大值即可。
个人排雷:
1: 端点 0,l 需要单独考虑,
2:保留两位小数:String.format("%.2f,ret);
3:空间换时间,时间复杂度应该可以降到o(n),但是数据量n<1000,排序应该够用了。
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
int n=sc.nextInt();
long l=sc.nextLong();
long[] nums=new long[n];
for(int i=0;i<n;i++){
nums[i]=sc.nextLong();
}
Arrays.sort(nums);
long gap=nums[1]-nums[0];
for(int i=1;i<n;i++){
gap=Math.max(gap,nums[i]-nums[i-1]);
}
gap=Math.max(gap,nums[0]*2);
gap=Math.max(gap,(l-nums[n-1])*2);
System.out.println(String.format("%.2f",gap/2.0));
}
}
}


京公网安备 11010502036488号