Distance between Bus Stops Problem & Solution
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.
See the distance between bus stops problem on LeetCode.
C++ Solution
#pragma GCC optimize("Ofast")
#pragma GCC optimization("unroll-loops")
#pragma GCC target("avx,avx2,fma")
static const int _=[](){std::ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);return 0;}();
class Solution {
public:
int distanceBetweenBusStops(vector<int>& distance, int start, int destination) {
int clockwise = 0;
int node = start;
while (node != destination) {
clockwise += distance[node];
node = (node + 1) % distance.size();
}
int counterclockwise = 0;
node = destination;
while (node != start) {
counterclockwise += distance[node];
node = (node + 1) % distance.size();
}
return min(clockwise, counterclockwise);
}
};