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
}
}
有疑问加站长微信联系(非本文作者)