题目:
奥运会开始了,请你为各个国家和地区作奖牌排序,按照金牌>银牌>铜牌的格式顺序排序
输入:
第一行 告诉你共有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
思路比较简单
优先比较第一列数字,然后比较第二列数字,最后比较第三列数字,都按从大到小排序就好了
这里主要分享一下lambda表达式和comparator的使用
代码:
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int[][] arr = new int[n][3];
for (int i = 0; i < n; i++) {//输入
for (int j = 0; j < 3; j++) {
arr[i][j] = scanner.nextInt();
}
}
sort(arr);
}
public static void sort(int[][] arr){
int len = arr.length;
Arrays.sort(arr,(o1,o2)->{
if(o1[0] == o2[0]){
if(o1[1] == o2[1]){
return o2[2] - o1[2];
}
return o2[1] - o1[1];
}
return o2[0] - o1[0];
});
for (int i = 0; i < len; i++) {//输出
for (int j = 0; j < arr[i].length; j++) {
if(j!=0){
System.out.print(" ");
}
System.out.print(arr[i][j]);
}
System.out.println();
}
}