怎么做网站文件千锋教育培训收费一览表
华为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[]>>() {@Overridepublic 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());}
}