> For the complete documentation index, see [llms.txt](https://jaywin.gitbook.io/leetcode/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://jaywin.gitbook.io/leetcode/solutions/0624-maximum-distance-in-arrays.md).

# 0624. Maximum Distance in Arrays

<https://leetcode.com/problems/maximum-distance-in-arrays>

## Description

You are given `m` `arrays`, where each array is sorted in **ascending order**.

You can pick up two integers from two different arrays (each array picks one) and calculate the distance. We define the distance between two integers `a` and `b` to be their absolute difference `|a - b|`.

Return *the maximum distance*.

**Example 1:**

```
**Input:** arrays = [[1,2,3],[4,5],[1,2,3]]
**Output:** 4
**Explanation:** One way to reach the maximum distance 4 is to pick 1 in the first or third array and pick 5 in the second array.
```

**Example 2:**

```
**Input:** arrays = [[1],[1]]
**Output:** 0
```

**Example 3:**

```
**Input:** arrays = [[1],[2]]
**Output:** 1
```

**Example 4:**

```
**Input:** arrays = [[1,4],[0,5]]
**Output:** 4
```

**Constraints:**

* `m == arrays.length`
* `2 <= m <= 105`
* `1 <= arrays[i].length <= 500`
* `-104 <= arrays[i][j] <= 104`
* `arrays[i]` is sorted in **ascending order**.
* There will be at most `105` integers in all the arrays.

## ac

```java
class Solution {
    public int maxDistance(List<List<Integer>> arrays) {
        int min = arrays.get(0).get(0), max = arrays.get(0).get(arrays.get(0).size() - 1), res = 0;

        for (int i = 1; i < arrays.size(); i++) {
            res = Math.max(res, Math.abs(arrays.get(i).get(0) - max));
            res = Math.max(res, Math.abs(arrays.get(i).get(arrays.get(i).size() - 1) - min));
            min = Math.min(min, arrays.get(i).get(0));
            max = Math.max(max, arrays.get(i).get(arrays.get(i).size() - 1));
        }

        return res;
    }
}

/*
1) compare head and tail of each list, get min/max; 2) avoid min/max from the same list, compare with previous first, then update
*/
```
