1. 程式人生 > 其它 >leetcode 1184 看起來很嚇人,其實很簡單的題目

leetcode 1184 看起來很嚇人,其實很簡單的題目

技術標籤:C/C++程式設計序筆記leetcode

1184. 公交站間的距離

難度簡單39收藏分享切換為英文接收動態反饋

環形公交路線上有n個站,按次序從0n - 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

通過次數10,596提交次數18,286

題解:既然是一個環形,那麼任意兩點之間的距離,有兩個,只要返回最小值就可以了,唯一要注意的是,start不一定小於destination!!!

class Solution {
public:
    int distanceBetweenBusStops(vector<int>& distance, int start, int destination) {
        int sum=0;
        int dis=0;
        for(auto value:distance)
        {
            sum+=value;
        }
        for(int i=min(start,destination);i<max(start,destination);i++)
        {
            dis+=distance[i];
        }
        return min(dis,sum-dis);
    }
};

執行結果:

通過

顯示詳情

執行用時:4 ms, 在所有C++提交中擊敗了98.34%的使用者

記憶體消耗:8.4 MB, 在所有C++提交中擊敗了95.33%的使用者