题解 | #路灯#
路灯
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
}