1 solutions
-
0
题面描述:
在一个山洞里,存在一批宝藏,其价值通过一个数组
endurances
来表示,数组中的每个元素代表宝物的价值,范围在 到 之间,且所有值均不重复。任务是找出该数组中价值最高的三件宝物和最低的三件宝物的下标,并按照升序排列输出。输入为一个长度在 到 之间的数组,输出则包括两行,第一行为最高价值三件宝物的下标,第二行为最低价值三件宝物的下标。思路:自定义排序
1.对[值,下标]排序,取前三大的下标和前三小的下标
2.对下标的值排序
输出
题解
在这个问题中,我们需要从一个表示宝物价值的数组中找出最高和最低的三件宝物的下标。由于数组中的值没有重复,我们可以使用优先队列(最大堆和最小堆)来高效地获取这三件宝物的下标。
具体步骤如下:
-
数据结构选择:使用两个优先队列(最大堆和最小堆)。最大堆用于存储最大的三件宝物的值和对应的下标,最小堆则用于存储最小的三件宝物的值和下标。
-
入队操作:遍历输入的宝物价值数组,将每个价值及其下标放入最大堆和最小堆中。
-
出队操作:从最大堆中取出前三个最大值的下标,并从最小堆中取出前三个最小值的下标。
-
下标排序:由于要求输出下标按升序排列,取出的下标需要进行排序。
-
输出结果:最后按要求格式输出最高和最低价值宝物的下标。
代码
python
c++
java
-
- 1
Information
- ID
- 71
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 4
- Tags
- # Submissions
- 41
- Accepted
- 26
- Uploaded By