1. 程式人生 > 其它 >Leetcode 1184. 公交站間的距離

Leetcode 1184. 公交站間的距離


環形公交路線上有 n 個站,按次序從 0 到 n - 1 進行編號。我們已知每一對相鄰公交站之間的距離,distance[i] 表示編號為 i 的車站和編號為 (i + 1) % n 的車站之間的距離。

環線上的公交車都可以按順時針和逆時針的方向行駛。

返回乘客從出發點 start 到目的地 destination 之間的最短距離。

示例 1:

輸入:distance = [1,2,3,4], start = 0, destination = 1
輸出:1
解釋:公交站 0 和 1 之間的距離是 1 或 9,最小值是 1。

示例 2:

輸入:distance = [1,2,3,4], start = 0, destination = 2
輸出:3
解釋:公交站 0 和 2 之間的距離是 3 或 7,最小值是 3。

示例 3:

輸入:distance = [1,2,3,4], start = 0, destination = 3
輸出:4
解釋:公交站 0 和 3 之間的距離是 6 或 4,最小值是 4。

提示:

  • 1 <= n <= 10^4
  • distance.length == n
  • 0 <= start, destination < n
  • 0 <= distance[i] <= 10^4

Code:

class Solution {
public:
    int distanceBetweenBusStops(vector<int>& distance, int start, int destination) {
        int dist=0;
        
        int total=0;
        
        for(int i=0;i<distance.size();i++)
        {
            total+=distance[i];//求取總距離
        }
        if(start<destination)
        {
            for(int i=start;i<destination;i++)
            {
                dist+=distance[i];
            }
            return min(dist,total-dist);
        }
        else
        {
            for(int i=start;i<distance.size();i++)
            {
                dist+=distance[i];
            }
            for(int i=0;i<destination;i++)
            {
                dist+=distance[i];
            }
            return min(dist,total-dist);
        }
        
        return 0;
        
    }
};