leetcode 1184 看起來很嚇人,其實很簡單的題目
阿新 • • 發佈:2021-01-24
技術標籤:C/C++程式設計序筆記leetcode
難度簡單39收藏分享切換為英文接收動態反饋
環形公交路線上有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
通過次數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%的使用者