From 43e53b3da038ee627ddfae0635446dc18bb9a336 Mon Sep 17 00:00:00 2001 From: YDZ Date: Fri, 18 Oct 2019 18:10:35 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20problem=201184?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../1184. Distance Between Bus Stops.go | 15 +++++ .../1184. Distance Between Bus Stops_test.go | 54 +++++++++++++++++ .../README.md | 59 +++++++++++++++++++ 3 files changed, 128 insertions(+) create mode 100644 Algorithms/1184. Distance Between Bus Stops/1184. Distance Between Bus Stops.go create mode 100644 Algorithms/1184. Distance Between Bus Stops/1184. Distance Between Bus Stops_test.go create mode 100755 Algorithms/1184. Distance Between Bus Stops/README.md diff --git a/Algorithms/1184. Distance Between Bus Stops/1184. Distance Between Bus Stops.go b/Algorithms/1184. Distance Between Bus Stops/1184. Distance Between Bus Stops.go new file mode 100644 index 00000000..3c542da6 --- /dev/null +++ b/Algorithms/1184. Distance Between Bus Stops/1184. Distance Between Bus Stops.go @@ -0,0 +1,15 @@ +package leetcode + +func distanceBetweenBusStops(distance []int, start int, destination int) int { + clockwiseDis, counterclockwiseDis, n := 0, 0, len(distance) + for i := start; i != destination; i = (i + 1) % n { + clockwiseDis += distance[i] + } + for i := destination; i != start; i = (i + 1) % n { + counterclockwiseDis += distance[i] + } + if clockwiseDis < counterclockwiseDis { + return clockwiseDis + } + return counterclockwiseDis +} diff --git a/Algorithms/1184. Distance Between Bus Stops/1184. Distance Between Bus Stops_test.go b/Algorithms/1184. Distance Between Bus Stops/1184. Distance Between Bus Stops_test.go new file mode 100644 index 00000000..9707cd7b --- /dev/null +++ b/Algorithms/1184. Distance Between Bus Stops/1184. Distance Between Bus Stops_test.go @@ -0,0 +1,54 @@ +package leetcode + +import ( + "fmt" + "testing" +) + +type question1184 struct { + para1184 + ans1184 +} + +// para 是参数 +// one 代表第一个参数 +type para1184 struct { + distance []int + start int + destination int +} + +// ans 是答案 +// one 代表第一个答案 +type ans1184 struct { + one int +} + +func Test_Problem1184(t *testing.T) { + + qs := []question1184{ + + question1184{ + para1184{[]int{1, 2, 3, 4}, 0, 1}, + ans1184{1}, + }, + + question1184{ + para1184{[]int{1, 2, 3, 4}, 0, 2}, + ans1184{3}, + }, + + question1184{ + para1184{[]int{1, 2, 3, 4}, 0, 3}, + ans1184{4}, + }, + } + + fmt.Printf("------------------------Leetcode Problem 1184------------------------\n") + + for _, q := range qs { + _, p := q.ans1184, q.para1184 + fmt.Printf("【input】:%v 【output】:%v\n", p, distanceBetweenBusStops(p.distance, p.start, p.destination)) + } + fmt.Printf("\n\n\n") +} diff --git a/Algorithms/1184. Distance Between Bus Stops/README.md b/Algorithms/1184. Distance Between Bus Stops/README.md new file mode 100755 index 00000000..b77bce66 --- /dev/null +++ b/Algorithms/1184. Distance Between Bus Stops/README.md @@ -0,0 +1,59 @@ +# [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:** + +![](https://assets.leetcode.com/uploads/2019/09/03/untitled-diagram-1.jpg) + + 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. + +**Example 2:** + +![](https://assets.leetcode.com/uploads/2019/09/03/untitled-diagram-1-1.jpg) + + Input: distance = [1,2,3,4], start = 0, destination = 2 + Output: 3 + Explanation: Distance between 0 and 2 is 3 or 7, minimum is 3. + +**Example 3:** + +![](https://assets.leetcode.com/uploads/2019/09/03/untitled-diagram-1-2.jpg) + + Input: distance = [1,2,3,4], start = 0, destination = 3 + Output: 4 + Explanation: Distance between 0 and 3 is 6 or 4, minimum is 4. + +**Constraints:** + +- `1 <= n <= 10^4` +- `distance.length == n` +- `0 <= start, destination < n` +- `0 <= distance[i] <= 10^4` + + +## 题目大意 + +环形公交路线上有 n 个站,按次序从 0 到 n - 1 进行编号。我们已知每一对相邻公交站之间的距离,distance[i] 表示编号为 i 的车站和编号为 (i + 1) % n 的车站之间的距离。环线上的公交车都可以按顺时针和逆时针的方向行驶。返回乘客从出发点 start 到目的地 destination 之间的最短距离。 + +提示: + +- 1 <= n <= 10^4 +- distance.length == n +- 0 <= start, destination < n +- 0 <= distance[i] <= 10^4 + + +## 解题思路 + + +- 给出一个数组,代表的是公交车站每站直接的距离。距离是按照数组下标的顺序给出的,公交车可以按照顺时针行驶,也可以按照逆时针行驶。问行驶的最短距离是多少。 +- 按照题意,分别算出顺时针和逆时针的行驶距离,比较两者距离,取出小值就是结果。