JAVA CCF-201503-2 数字排序

欢迎访问我的CCF认证解题目录


题目描述

在这里插入图片描述


思路过程

题目给定一些数字,让这些数字按次数降序、数字升序的形式输出,给定的数字不会超过1000,且是非负数。
我们可以定义一个长度为1005的数组保存数字和次数两个信息,读入数据,然后按要求排序即可


代码

import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;

public class Main {
	
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int n = in.nextInt();
		Node[] node = new Node[1005];//记录数字和对应出现的次数
		for ( int i = 0; i < node.length; i++ ) {//初始化
			node[i] = new Node();
			node[i].index = i;
		}
		while ( n-- != 0 ) node[in.nextInt()].cnt++;//次数+1
		Arrays.sort(node, new Comparator<Node>() {//按次数降序,数字升序
			@Override
			public int compare(Node o1, Node o2) {
				if ( o1.cnt != o2.cnt ) {
					return o2.cnt - o1.cnt;
				} else return o1.index - o2.index;
			}
		});
		
		for ( int i = 0; i < node.length; i++ ) {//输出
			if ( node[i].cnt == 0 ) break;
			System.out.println(node[i].index+" "+node[i].cnt);
		}
	}
	
}
class Node {
	int index, cnt;//index是数字,cnt是对应出现的次数
}
发布了60 篇原创文章 · 获赞 0 · 访问量 2139

猜你喜欢

转载自blog.csdn.net/weixin_43732798/article/details/103446666
今日推荐