Formatted question description: https://leetcode.ca/all/2091.html

# 2091. Removing Minimum and Maximum From Array (Medium)

You are given a **0-indexed** array of **distinct** integers `nums`

.

There is an element in `nums`

that has the **lowest** value and an element that has the **highest** value. We call them the **minimum** and **maximum** respectively. Your goal is to remove **both** these elements from the array.

A **deletion** is defined as either removing an element from the **front** of the array or removing an element from the **back** of the array.

Return *the minimum number of deletions it would take to remove both the minimum and maximum element from the array.*

**Example 1:**

Input:nums = [2,,7,5,4,10,8,6]1Output:5Explanation:The minimum element in the array is nums[5], which is 1. The maximum element in the array is nums[1], which is 10. We can remove both the minimum and maximum by removing 2 elements from the front and 3 elements from the back. This results in 2 + 3 = 5 deletions, which is the minimum number possible.

**Example 2:**

Input:nums = [0,,-4,1,8,-2,-3,5]19Output:3Explanation:The minimum element in the array is nums[1], which is -4. The maximum element in the array is nums[2], which is 19. We can remove both the minimum and maximum by removing 3 elements from the front. This results in only 3 deletions, which is the minimum number possible.

**Example 3:**

Input:nums = []101Output:1Explanation:There is only one element in the array, which makes it both the minimum and maximum element. We can remove it with 1 deletion.

**Constraints:**

`1 <= nums.length <= 10`

^{5}`-10`

^{5}<= nums[i] <= 10^{5}- The integers in
`nums`

are**distinct**.

**Similar Questions**:

- Maximum Points You Can Obtain from Cards (Medium)
- Minimum Deletions to Make Character Frequencies Unique (Medium)

## Solution 1.

**Intuition**: Find the two indices of the maximum and minimum elements, say `a`

and `b`

. The order doesn’t matter. We only need to consider 3 cases:

- Delete both from left and right.
- Delete only from left
- Delete only from right

**Algorithm**:

Make sure `a < b`

, and return the minimum of the following:

`(a + 1) + (N - b)`

-> delete both from left and right`b + 1`

-> delete from left`N - a`

-> delete from right

```
// OJ: https://leetcode.com/problems/removing-minimum-and-maximum-from-array/
// Time: O(N)
// Space: O(1)
class Solution {
public:
int minimumDeletions(vector<int>& A) {
int a = max_element(begin(A), end(A)) - begin(A), b = min_element(begin(A), end(A)) - begin(A), N = A.size();
if (a > b) swap(a, b);
return min({ a + 1 + N - b, b + 1, N - a });
}
};
```

## Disucss

https://leetcode.com/problems/removing-minimum-and-maximum-from-array/discuss/1599809/C%2B%2B-Only-3-cases