机试题——找磨损度最高和最低的硬盘

news/2025/2/3 20:14:10 标签: 算法, 数据结构

题目描述

存储阵列上使用的一批固态硬盘,根据硬盘磨损值给定一个数组 endurances,数组中每个元素表示单块硬盘的磨损度(0 到 10000 之间)。磨损度越大,表示此盘需要更换的概率越高。需要找出磨损度最高三块盘的下标和磨损度最低三块盘的下标。

输入:

  • 输入为一组硬盘磨损度的数组。

输出:

  • 第一行:磨损度最高三块盘的下标,按下标升序展示。
  • 第二行:磨损度最低三块盘的下标,按下标升序展示。

输入说明:

  • 数组 endurances 中无重复值。
  • 数组的长度范围:[6, 200]
  • 数组的下标从 0 开始。

输出说明:

  • 输出两行结果,第一行是磨损度最高三块硬盘的下标,第二行是磨损度最低三块硬盘的下标,且下标按升序排列。

用例输入

1 50 40 68 72 86 35 14 87 99 63 75
5 8 9 
0 6 7
23 34 56 12 11 10
0 1 2 
3 4 5

解题思路

  1. 输入解析

    • 先读取硬盘的磨损度数组 endurances
    • 同时构建一个数组,将硬盘的下标和磨损度一起存储,以便后续排序操作。
  2. 排序并提取最大和最小值的下标

    • 提取出磨损度最低的前三个元素的下标。
    • 提取出磨损度最高的后三个元素的下标。
  3. 排序下标

    • 对最小和最大值的下标进行升序排序,确保输出按升序排列。

代码

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
    vector<pair<int, int>> data;
    int val;
    int idx = 0;

    while (cin >> val) {
        data.push_back({ idx, val });
        idx++;
        if (cin.get() == '\n') break;  // 遇到换行符结束输入
    }

    // 按磨损度升序
    sort(data.begin(), data.end(),
        [](const pair<int, int>& a, const pair<int, int>& b) {
            return a.second < b.second;
        });

    // 取出最低三块硬盘下标
    vector<int> min_index;
    for (int i = 0; i < 3; ++i) {
        min_index.push_back(data[i].first);
    }

    // 取出最高三块硬盘下标
    vector<int> max_index;
    for (int i = data.size() - 3; i < data.size(); ++i) {
        max_index.push_back(data[i].first);
    }

    // 排序输出最低三块硬盘下标
    sort(min_index.begin(), min_index.end());
    sort(max_index.begin(), max_index.end());

    for (int i = 0; i < 3; ++i) {
        cout << max_index[i] << " ";
    }
    cout << endl;

    for (int i = 0; i < 3; ++i) {
        cout << min_index[i] << " ";
    }
    cout << endl;
    return 0;
}

http://www.niftyadmin.cn/n/5841044.html

相关文章

【4】阿里面试题整理

[1]. 介绍一下数据库死锁 数据库死锁是指两个或多个事务&#xff0c;由于互相请求对方持有的资源而造成的互相等待的状态&#xff0c;导致它们都无法继续执行。 死锁会导致事务阻塞&#xff0c;系统性能下降甚至应用崩溃。 比如&#xff1a;事务T1持有资源R1并等待R2&#x…

Python面试宝典13 | Python 变量作用域,从入门到精通

今天&#xff0c;我们来深入探讨一下 Python 中一个非常重要的概念——变量作用域。理解变量作用域对于编写清晰、可维护、无 bug 的代码至关重要。 什么是变量作用域&#xff1f; 简单来说&#xff0c;变量作用域就是指一个变量在程序中可以被访问的范围。Python 中有四种作…

Flink报错Caused by: java.io.FileNotFoundException: /home/wc.txt

当在提交一个flink任务报如下的错误时&#xff1a; Caused by: java.io.FileNotFoundException: /home/wc.txt (没有那个文件或目录)at java.io.FileInputStream.open0(Native Method)at java.io.FileInputStream.open(FileInputStream.java:195)at java.io.FileInputStream.&…

Dijkstra算法解析

Dijkstra算法&#xff0c;用于求解图中从一个起点到其他所有节点的最短路径。解决单源最短路径问题的有效方法。 条件 有向 带权路径 时间复杂度 O&#xff08;n平方&#xff09; 方法步骤 1 把图上的点分为两个集合 要求的起点 和除了起点之外的点 。能直达的写上权值 不…

基于SpringBoot的美食烹饪互动平台的设计与实现(源码+SQL脚本+LW+部署讲解等)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…

80-《红球姜》

红球姜 红球姜&#xff08;学名&#xff1a;Zingiber zerumbet (L.) Smith&#xff09;是姜科姜属多年生草本植物&#xff0c;根茎块状&#xff0c;株高可达2米。叶片披针形至长圆状披针形&#xff0c;无柄或短柄&#xff1b;总花梗长可达30厘米&#xff0c;花序球果状&#xf…

K8s介绍代理外部服务的svc几种方式

在 Kubernetes 中&#xff0c;若需让集群内应用访问外部服务&#xff0c;可通过以下 **Service 配置方式**实现代理&#xff1a; --- ### 1. **ClusterIP Service 手动维护 Endpoints** - **原理**&#xff1a;创建 ClusterIP 类型的 Service 并手动指定 Endpoints&#xff…

C++初阶—string类

第一章&#xff1a;为什么要学习string类 1.1 C语言中的字符串 C语言中&#xff0c;字符串是以\0结尾的一些字符的集合&#xff0c;为了操作方便&#xff0c;C标准库中提供了一些str系列的库函数&#xff0c;但是这些库函数与字符串是分离开的&#xff0c;不太符合OOP的思想&…