一.问题描述
A bus has n stops numbered from 0 to n - 1 that form a circle. We know the distance between all pairs of neighboring stops where distance[i] is the distance between the stops number i and (i + 1) % n.
The bus goes along both directions i.e. clockwise and counterclockwise.
Return the shortest distance between the given start and destination stops.
Example 1:

Input: distance = [1,2,3,4], start = 0, destination = 1
Output: 1
Explanation: Distance between 0 and 1 is 1 or 9, minimum is 1.
Example 2:

Input: distance = [1,2,3,4], start = 0, destination = 2
Output: 3
Explanation: Distance between 0 and 2 is 3 or 7, minimum is 3.
Example 3:

Input: distance = [1,2,3,4], start = 0, destination = 3
Output: 4
Explanation: Distance between 0 and 3 is 6 or 4, minimum is 4.
Constraints:
1 <= n <= 10^4distance.length == n0 <= start, destination < n0 <= distance[i] <= 10^4
二.解题思路
这道题看起来很吓人,其实非常简单
就是求车子是顺着走近,还是逆着走近
两边加一下看哪个小就是了
实现的时候注意一下start可能是大于destination,因此先让start等于小的那个
这样做只是为了方便实现,毕竟你从start到destination和从destination到start求的都是一个东西。
更更多leetcode算法题解法: 专栏 leetcode算法从零到结束 或者 leetcode 解题目录 Python3 一步一步持续更新~
三.源码
class Solution:
def distanceBetweenBusStops(self, distance: List[int], start: int, destination: int) -> int:
if start>destination:
temp=destination
destination=start
start=temp
temp=sum(distance[start:destination])
return min(temp,sum(distance)-temp)

560

被折叠的 条评论
为什么被折叠?



