路灯问题-排序之后相邻元素的最大差值

路灯

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));


        }
    }
}
全部评论

相关推荐

点赞 评论 收藏
转发
1 收藏 评论
分享
牛客网
牛客企业服务