【华为上机真题 2022】按照身高体重排队

news/2024/7/8 4:54:32

🎈 作者:Linux猿

🎈 简介:CSDN博客专家🏆,华为云享专家🏆,Linux、C/C++、云计算、物联网、面试、刷题、算法尽管咨询我,关注我,有问题私聊!

🎈 关注专栏: 数据结构和算法成神路【精讲】优质好文持续更新中……🚀🚀🚀

🎈 欢迎小伙伴们点赞👍、收藏⭐、留言💬


目录

一、题目描述

1.1 输入描述

1.2 输出描述

1.2.1 示例 1

1.2.2 示例 2

二、解题思路

三、代码实现

四、时间复杂度


 注意:题目来源于网络用户分享,本文仅分享做题思路和方法,如有侵权请联系我删除!

一、题目描述

1.1 输入描述

两个序列,每个序列由 n 个正整数组成(0 < n <= 100)。第一个序列中的数值代表身高,第二个序列中的数值表示体重。

1.2 输出描述

排列结果,每个数值都是原始序列中的学生编号,编号从1开始。

1.2.1 示例 1

输入

4 
100 100 120 130
40 30 60 50 

输出

2 1 3 4

说明:输出的第一个数字2表示此人原始编号为2,即身高为100, 体重为30这个人。由于他和编号为 1 的人身高一样,但体重更轻,因此排在 1 号的前面。

1.2.2 示例 2

输入

3
90 110 90
45 60 45

输出

1 3 2 

说明:1 和 3 的身高体重都相同,需要按照原有位置关系让 1 排在 3 前面,而不是 3 1 2。

二、解题思路

本题比较简单,根据身高和体重进行排队,只需要根据身高、体重和所在的编号进行排序即可,先比较身高,如果相等,则比较体重,如果体重也相等,则按照排列的序号来。

三、代码实现

代码实现如下所示。

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

const int MAX = 105;

struct Node {
    int h;
    int w;
    int idx;
}g[MAX];


bool cmp(struct Node x, struct Node y)
{
    if (x.h != y.h) {
        return x.h < y.h;
    } else if (x.w != y.w) {
        return x.w < y.w;
    }

    return x.idx < y.idx;
}

int main()
{
    int n;
    while (cin>>n) {
        for (int i = 0; i < n; ++i) {
            cin>>g[i].h;
            g[i].idx = i + 1;
        }
        for (int i = 0; i < n; ++i) {
            cin>>g[i].w;
        }

        stable_sort(g, g + n, cmp);

        for (int i = 0; i < n; ++i) {
            if (i) cout<<" ";
            cout<<g[i].idx;
        }
        cout<<endl;
    }
    return 0;
}

四、时间复杂度

时间复杂度:O(nlogn)

在上述代码中,时间主要耗费在稳定排序上,排序的时间复杂度为 O(nlogn),所以总时间复杂度为 O(nlogn)。


🎈 感觉有帮助记得「一键三连支持下哦!有问题可在评论区留言💬,感谢大家的一路支持!🤞猿哥将持续输出「优质文章回馈大家!🤞🌹🌹🌹🌹🌹🌹🤞



http://lihuaxi.xjx100.cn/news/299061.html

相关文章

唯一索引和普通索引应该如何选择?

唯一索引和普通索引应该如何选择 唯一索引&#xff1a;唯一索引和主键索引一样不能重复。唯一索引可作为数据的一个合法检验手段。普通索引&#xff1a;在创建普通索引时&#xff0c;没有任何的限制条件&#xff0c;比如非空或者唯一&#xff0c;可以在任意字段上建立普通索引…

表数据结构变动、修复表数据的历史版本兼容解决方案

​ 平时我们做业务需求的时候&#xff0c;难免会碰到有些非常大的改动&#xff0c;大到要修改表结构或者数据结构才能满足&#xff0c;这时候如何能同时兼容老版本的业务与新版本的业务就是一个首要解决问题 1.将老版本数据格式升级到新版本 这是一个很容易想到的解决方案&…

Vue3聊天气泡简单实现思路

Vue3聊天气泡简单实现 实现聊天气泡主要有两个注意点&#xff1a; ①是根据字体数量自适应框的长度 ②字体到框有边距&#xff0c;也就是为了美观 这篇博客主要讲实现的思路&#xff0c;不讲聊天气泡的三角突出点&#xff0c;如下所示&#xff1a; 三角突出点通过简单的bord…

QuEra将研发可重构中性原子量子计算机

&#xff08;图片来源&#xff1a;网络&#xff09; 上个月&#xff0c;借助Amazon Braket&#xff0c;QuEra Computing开始提供对其中性原子量子系统Aquila的访问, Aquila具有256个量子比特。如今&#xff0c;量子公司的数量与日俱增&#xff0c;QuEra是其中之一&#xff0c;它…

图片base64,file,blob格式的相互转换,以及gif转base64

图片base64&#xff0c;file,blob格式的相互转换&#xff0c;以及gif转base64(第六点) 1、new Image()图片链接转base64 只能转化为普通的jpg/png图片。无法转化gif图type可以转换为base64和blobquality图片质量(image/jpeg 或 image/webp 生效) const imgToBase64 ({url,typ…

MyBatis-Plus配置之基础配置(SpringBoot)

系列文章目录 Mybatis-Plus知识点[MyBatisMyBatis-Plus的基础运用]_心态还需努力呀的博客-CSDN博客 Mybatis-PlusSpringBoot结合运用_心态还需努力呀的博客-CSDN博客MyBaits-Plus中TableField和TableId用法_心态还需努力呀的博客-CSDN博客 MyBatis-Plus中的更新操作&#x…

sonarqube个人记事本

Sonarqube安装路径 [rootshqywxtap02 sonar]# pwd /opt/sonar 查看状态 ps -ef | grep sonar bin目录中启停 ./bin/linux-x86-64/sonar.sh start ./bin/linux-x86-64/sonar.sh stop conf配置文件 添加以下参数&#xff1a; sonar.jdbc.usernamesonar sonar.jdbc.passwo…

魏副业而战:做闲鱼副业项目,要多模仿同行

我是魏哥&#xff0c;与其在家躺平&#xff0c;不如魏副业而战&#xff01; 很多新手小伙伴做闲鱼不知道卖什么产品好&#xff0c;很纠结。 这是闲鱼新手遇到的通病&#xff0c;选择困难症。他们既想做这个&#xff0c;又想做那个&#xff0c;习惯跟着感觉走&#xff0c;认为…