题目描述
奥运会开始了,想请你为各个国家和地区做奖牌排序,按照金牌>银牌>铜牌的格式进行排序
输入
第一行 告诉你共有n个国家
接来下的n 行 每行三个数字 分别代表 金牌数量 银牌数量 铜牌数量 中间用空格隔开
输出
输出n行 每行三个数字 按照题意进行排序
样例输入
5
1 2 3
2 3 4
1 4 6
1 4 3
0 3 4
样例输出
2 3 4
1 4 6
1 4 3
1 2 3
0 3 4
解题思路
网上都是通过多个循环来解决的,我这里想用一个map集合来干,这样的优点是时间复杂度相对较低,缺点是不是通解,但是在实际问题上我认为是会有限制的,利用这些限制可以更好的解决问题
package com.xxxx;
import java.util.*;
public class sortTest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n=sc.nextInt();
int[][] arr=new int[n][3];
for(int i=0;i<n;i++) {
for(int j=0;j<3;j++){
int m=sc.nextInt();
arr[i][j]=m;
}
}
mapconfige(n, arr);
}
/**
* 利用map集合,将奖牌当value
* 假设:奖牌数最高99个,如果更多可以修改,可根据实际情况设置
* key:使用金牌*10000+银牌+100+铜牌
*/
public static void mapconfige(int n, int[][]aar){
HashMap<Integer, int[]> map = new HashMap<>();
List<Integer> list = new ArrayList<>();
for (int i = 0; i < n; i++) {
Integer key = aar[i][0] * 10000 + aar[i][1] * 10