package LeetCode_1184
/**
* 1184. Distance Between Bus Stops
* https://leetcode.com/problems/distance-between-bus-stops/
* 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.
* */
class Solution {
/*
* Time:O(n), Space:O(1)
* */
fun distanceBetweenBusStops(distance: IntArray, start: Int, destination: Int): Int {
var total = 0
var sum = 0
var s = start
var d = destination
if (s > d) {
//swap start and destination
val temp = d
d = s
s = temp
}
for (i in distance.indices) {
//calculate distance from start to end
if (i >= s && i < d) {
sum += distance[i]
}
//calculate total distance
total += distance[i]
}
//the distance of other direction is:total - sum
return Math.min(total - sum, sum)
}
}