这是我参与11月更文挑战的第28天,活动详情查看:2021最后一次更文挑战
- 从数组中移除最大值和最小值
给你一个下标从 0 开始的数组 nums ,数组由若干 互不相同 的整数组成。
nums 中有一个值最小的元素和一个值最大的元素。分别称为 最小值 和 最大值 。你的目标是从数组中移除这两个元素。
一次 删除 操作定义为从数组的 前面 移除一个元素或从数组的 后面 移除一个元素。
返回将数组中最小值和最大值 都 移除需要的最小删除次数。
1 | ini复制代码示例 1: |
提示:
- 1 <= nums.length <= 10510^5105
- −105-10^5−105 <= nums[i] <= 10510^5105
- nums 中的整数 互不相同
解题思路
- 统计最大值和最小值所在的下标,因为在这题中,哪个是最大值,哪个是最小值对题目并不影响,因此我们只需要知道左边极值的下标和右边极值的下标即可。
- 共有三种删除方法
- 从数组的 前面 移除元素,直到把右边的极值移除
- 从数组的 后面 移除元素,直到把左边的极值移除
- 从数组的两边一齐移除元素,直到把左边和右边的极值移除
代码
1 | cpp复制代码class Solution { |
本文转载自: 掘金