邮局问题

分析:
1.首先根据第一个房子的位置,决定第一个邮局的位置
2.第一个邮局位置确定后,要注意邮局左右范围100内都为有效范围
3.依次继续,从超出范围的继续进行比对
结果示例:
房子位置: [11 101 201 208 298 302 378 456 555 567 588 612 654 721 789 801]
邮局位置: [111 398 655 889]
邮局个数: 4
代码:
package main
import "fmt"
func postOffice(H []int64) []int64 {
P := []int64{}
if len(H) == 0 {
return P
}
// 第一个邮局位置
P = append(P, H[0]+100)
// 中间邮局位置
for i := 1; i < len(H); i++ {
if H[i] > P[len(P)-1]+100 {
P = append(P, H[i]+100)
}
}
return P
}
func main() {
H := []int64{11, 101, 201, 208, 298, 302, 378, 456, 555, 567, 588, 612, 654, 721, 789, 801}
P := postOffice(H)
fmt.Println("房子位置:",H)
fmt.Println("邮局位置:",P)
fmt.Println("邮局个数:",len(P))
}
网友评论