找磨损度最高和最低的硬盘 - 华为机试真题题解
分值: 100分
题解: Java / Python / C++
题目描述
存储阵列上使用的一批固态硬盘,根据硬盘磨损值给定一个数组endurances,数组中每个元素表示单块硬盘的磨损度(0到10000之间)。
磨损度越大,表示此盘需要更换的概率越高。需要找出磨损度最高三块盘下标和磨损度最低的三块盘下标。
输入描述
一组硬盘磨损度的数组。
说明:
(1) 数组endurances中无重复值
(2) 数组的长度范围:[6,200]
(3) 数组的下标从0开始。
输出描述
第一行:磨损度最高三块盘下标,按下标升序展示
第二行:磨损度最低的三块盘下标,按下标升序展示
示例1
输入:
1 50 40 68 72 86 35 14 87 99 63 75
输出:
5 8 9
0 6 7
解释:
输入:1 50 40 68 72 86 35 14 87 99 63 75:表示一组硬盘磨损度的数组,其中的每个数值表示每个硬盘对应的磨损度。
输出:
5 8 9:表示磨损度最高三块盘的下标
0 6 7:表示磨损度最低的三块盘的下标
示例2
输入:
23 34 56 12 11 10
输出:
0 1 2
3 4 5
解释:
输入:23 34 56 12 11 10:表示一组硬盘磨损度的数组,其中的每个数值表示每个硬盘对应的磨损度。
输出:
0 1 2:表示磨损度最高三块盘的下标
3 4 5:表示磨损度最低的三块盘的下标
题解
简单构造题
将“磨损度” 和 “下标” 封装在一起然后根据“磨损度”排序,前三个是磨损度最低的三块盘, 后三个是磨损度最高的三块盘。
Java
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
/**
* @author code5bug
*/
public class Main {
// 打印输出
static void print(List<Integer> list) {
int n = list.size();
for (int i = 0; i < n; i++) {
if (i + 1 == n) {
System.out.println(list.get(i));
} else {
System.out.print(list.get(i) + " ");
}
}
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
List<int[]> endurances =
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
2024华为OD机试真题题解 文章被收录于专栏
华为OD机考(C卷、D卷)算法题库(绝对都是原题),帮助你上岸华为(已经不少小伙伴成功上岸)。提供Java、Python、C++ 三种语言的解法。每篇文章都有详细的解题步骤、代码注释详细及相关知识点的练习题。有问题,随时解答。 从 2024年4月24开始,考的都是华为OD统一考试(D卷),据已经参加D卷考试的同学反馈D卷和C卷是一样的,如果发现新题会及时更新。