leetcode_1184

Golang:

思路:这题属于简单题,简单题的意义就是比谁的方法效率更高。这道题里,distance数组是一定会被访问一整遍的,那么如何只用一次遍历就得到结果呢?简单的说,当我们找到点i和点j顺时针方向的距离后,那么数组中剩下的数总和就是点i到点j逆时针方向的距离之和了。我们从这两个和里面返回小的那个即可。

代码如下:

func distanceBetweenBusStops(distance []int, start int, destination int) int {
    if start==destination {
        return 0
    }
    length1,length2:=0,0
    if start>destination{
        start,destination=destination,start
    }
    for i:=0; i<len(distance); i++ {
        if i>=start&&i<destination{
            length1+=distance[i]
        }else {
            length2+=distance[i]
        }
    }
    if length1>length2 {
        return length2
    }else {
        return length1
    }
}

推荐阅读更多精彩内容