邮局问题

2019-06-25  本文已影响0人  唐僧取经

邮局问题

15449382440870.jpg

分析:

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


上一篇 下一篇

猜你喜欢

热点阅读