• 华为OD 身高体重排序(100分)【java】A卷+B卷


    华为OD统一考试A卷+B卷 新题库说明
    你收到的链接上面会标注A卷还是B卷。目前大部分收到的都是B卷。
    B卷对应20022部分考题以及新出的题目,A卷对应的是新出的题目。
    我将持续更新最新题目

    获取更多免费题目可前往夸克网盘下载,请点击以下链接进入:

    我用夸克网盘分享了「华为OD题库Java.zip」,点击链接即可保存。打开「夸克APP」
    链接:https://pan.quark.cn/s/f59329c0173b
    提取码:3p8Y

    题目类型:数组
    题目描述:
    某学校举行运动会,学生们按编号(1、2、3…n)进行标识,现需要按照身高由低到高排列,对身高相同的人,按体重由轻到重排列;对于身高体重都相同的人,维持原有的编号顺序关系。请输出排列后的学生编号。

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

    输出描述:
    排列结果,每个数值都是原始序列中的学生编号,编号从1开始,身高从低到高,身高相同体重从轻到重,体重相同维持原来顺序。

    示例 1:
    输入
    4
    100 100 120 130
    40 30 60 50

    输出
    2 1 3 4

    示例 2:
    输入
    3
    90 110 90
    45 60 45

    输出
    1 3 2

    参考代码:

    import java.util.*;
    
    public class HeightWeightSort {
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            int n = in.nextInt();
            in.nextLine();
            String[] height = in.nextLine().split(" ");
            String[] weight = in.nextLine().split(" ");
            int[] h = new int[n];
            int[] w = new int[n];
            Map<Integer, int[]> map = new HashMap<>();
            for (int i = 0; i < n; i++) {
                h[i] = Integer.parseInt(height[i]);
                w[i] = Integer.parseInt(weight[i]);
                map.put(i, new int[]{0, 0});
                int[] info = map.get(i);
                info[0] = h[i];
                info[1] = w[i];
            }
    
            // Map按value排序,先将map转为list,再排序list(按value值进行排序)
            List<Map.Entry<Integer, int[]>> list = new ArrayList<Map.Entry<Integer, int[]>>(map.entrySet());
            // 通过比较器来实现排序
            Collections.sort(list, new Comparator<Map.Entry<Integer, int[]>>() {
                @Override
                public int compare(Map.Entry<Integer, int[]> o1, Map.Entry<Integer, int[]> o2) {
                    // 降序排序
                    int re = o1.getValue()[0] - o2.getValue()[0];
                    if (re != 0) {
                        return re;
                    }
                    re = o1.getValue()[1] - o2.getValue()[1];
                    if (re != 0) {
                        return re;
                    }
                    return 0;
                }
            });
    
            StringBuilder sb = new StringBuilder();
            for (Map.Entry<Integer, int[]> mapping : list) {
                sb.append(String.valueOf(mapping.getKey() + 1) + " ");
            }
            System.out.print(sb.toString().trim());
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
  • 相关阅读:
    AI赋能目标跟踪 智算加速“视”不可挡
    C++二级题目5
    SQL Server批量删除数据库中的表
    商用字体网站,再也不用怕侵权
    vscode 上传项目到gitlab
    IOC的理解学习
    [Typescript]基础篇之函数
    十个经典java开发项目及其描述-马上写到你的简历中去吧,祝你升职加薪
    设计模式之组合模式
    Kafka-Java一:Spring实现kafka消息的简单发送
  • 原文地址:https://blog.csdn.net/qq_41570843/article/details/133955745