> For the complete documentation index, see [llms.txt](https://hao-fu-1.gitbook.io/oj/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hao-fu-1.gitbook.io/oj/math/zhao-gui-lv/1503.-last-moment-before-all-ants-fall-out-of-a-plank.md).

# 1503. Last Moment Before All Ants Fall Out of a Plank

We have a wooden plank of the length `n` **units**. Some ants are walking on the plank, each ant moves with speed **1 unit per second**. Some of the ants move to the **left**, the other move to the **right**.

When two ants moving in two **different** directions meet at some point, they change their directions and continue moving again. Assume changing directions doesn't take any additional time.

When an ant reaches **one end** of the plank at a time `t`, it falls out of the plank imediately.

Given an integer `n` and two integer arrays `left` and `right`, the positions of the ants moving to the left and the right. Return *the moment* when the last ant(s) fall out of the plank.

**Example 1:**![](https://assets.leetcode.com/uploads/2020/06/17/ants.jpg)

```
Input: n = 4, left = [4,3], right = [0,1]
Output: 4
Explanation: In the image above:
-The ant at index 0 is named A and going to the right.
-The ant at index 1 is named B and going to the right.
-The ant at index 3 is named C and going to the left.
-The ant at index 4 is named D and going to the left.
Note that the last moment when an ant was on the plank is t = 4 second, after that it falls imediately out of the plank. (i.e. We can say that at t = 4.0000000001, there is no ants on the plank).
```

**Example 2:**![](https://assets.leetcode.com/uploads/2020/06/17/ants2.jpg)

```
Input: n = 7, left = [], right = [0,1,2,3,4,5,6,7]
Output: 7
Explanation: All ants are going to the right, the ant at index 0 needs 7 seconds to fall.
```

**Example 3:**![](https://assets.leetcode.com/uploads/2020/06/17/ants3.jpg)

```
Input: n = 7, left = [0,1,2,3,4,5,6,7], right = []
Output: 7
Explanation: All ants are going to the left, the ant at index 7 needs 7 seconds to fall.
```

**Example 4:**

```
Input: n = 9, left = [5], right = [4]
Output: 5
Explanation: At t = 1 second, both ants will be at the same intial position but with different direction.
```

**Example 5:**

```
Input: n = 6, left = [6], right = [0]
Output: 6
```

**Constraints:**

* `1 <= n <= 10^4`
* `0 <= left.length <= n + 1`
* `0 <= left[i] <= n`
* `0 <= right.length <= n + 1`
* `0 <= right[i] <= n`
* `1 <= left.length + right.length <= n + 1`
* All values of `left` and `right` are unique, and each value can appear **only in one** of the two arrays.

范围为\[0, n]的一维坐标系，left表示对应位置的蚂蚁会向左走，right为向右走的，当两个蚂蚁相遇后会分别折返，问最后一只蚂蚁走出坐标系需要的步数。蚂蚁相遇后的效果依然是一只蚂蚁往左另一只往右，区分哪只是哪只并无裨益，因此分别统计往左走的离0有多远，右边离n多远，找它们中距离最大的

```python
class Solution:
    def getLastMoment(self, n: int, left: List[int], right: List[int]) -> int:
        return max(max(left or [0]), n - min(right or [n]))
        
```
