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^4
distance.length == n
0 <= start, destination < n
0 <= distance[i] <= 10^4
Solutions
Solution 1: Simulation
We can first calculate the total distance \(s\) that the bus travels, then simulate the bus's journey. Starting from the departure point, we move one stop to the right each time until we reach the destination, recording the travel distance \(t\) during this process. Finally, we return the minimum value between \(t\) and \(s - t\).
The time complexity is \(O(n)\), where \(n\) is the length of the array \(\textit{distance}\). The space complexity is \(O(1)\).