路灯问题-排序之后相邻元素的最大差值
路灯
http://www.nowcoder.com/questionTerminal/62cdf520b9d94616b6644ac03a0306ff
基本思路:排序之后求相邻元素的差值的最大值即可。
个人排雷:
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)); } } }