题目来源:
leetcode题目,网址:1184. 公交站间的距离 - 力扣(LeetCode)
解题思路:
计算顺时针方向距离与逆时针方向距离,返回其中的较小者即可。
解题代码:
class Solution {
public int distanceBetweenBusStops(int[] distance, int start, int destination) {
int clockwiseDistance=0;
int counterClockwiseDistance=0;
for(int i=start;i!=destination;i++){
if(i>=distance.length){
i=0;
}
if(i==destination)
break;
clockwiseDistance+=distance[i];
}
for(int i=start;i!=destination;i--){
if(i<0){
i=distance.length-1;
}
if(i==destination)
break;
counterClockwiseDistance+=(i-1>=0?distance[i-1]:distance[distance.length-1]);
if(counterClockwiseDistance>clockwiseDistance){
break;
}
}
return Math.min(counterClockwiseDistance,clockwiseDistance);
}
}
总结:
注意 distance[i] 是 i 到 i+1%n 的距离,因此逆时针计算距离时要取 distance[i-1]。
官方题解依次遍历,根据条件确定该距离是顺时针还是逆时针。