题解 | #路灯#
路灯
http://www.nowcoder.com/practice/62cdf520b9d94616b6644ac03a0306ff
golang解法 注意边界 求数组值与值间隔最大
package main import ( "fmt" "io" "sort" ) func main() { var n, l int for { _, err := fmt.Scan(&n, &l) if err == io.EOF { break } dis := make([]int, 0) var pos int for n > 0 { n-- fmt.Scan(&pos) dis = append(dis, pos) } sort.Ints(dis) maxv := 0 for i := 1; i < len(dis); i++ { if dis[i] - dis[i-1] > maxv { maxv = dis[i] - dis[i-1] } } // 考虑最先和最后两个边界 board := max(2*(l - dis[len(dis)-1]), 2 * dis[0]) if maxv < board { maxv = board } fmt.Printf("%.2f\n", float64(maxv)/2) } } func max(a, b int) int { if a >= b { return a } return b }