1. 题目
环形公交路线上有 n 个站,按次序从 0 到 n - 1 进行编号。我们已知每一对相邻公交站之间的距离,distance[i] 表示编号为 i 的车站和编号为 (i + 1) % n 的车站之间的距离。
环线上的公交车都可以按顺时针和逆时针的方向行驶。
返回乘客从出发点 start 到目的地 destination 之间的最短距离。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/distance-between-bus-stops
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2. 解题
- 一直走,先会碰到终点,记录d1
- 再同方向走,会碰到起点,记录d2
- 返回 min(d1,d2)min(d1,d2)min(d1,d2)
class Solution {
public:int distanceBetweenBusStops(vector<int>& distance, int start, int destination) {if(start == destination)return 0;int Dis1 = 0, Dis2 = 0, i, n = distance.size();for(i = start; i != destination; i++){Dis1 += distance[i];if(i == n-1)i = -1;}for(; i != start; i++){Dis2 += distance[i];if(i == n-1)i = -1;}return min(Dis1, Dis2);}
};