问题描写叙述
  给定n个整数,请统计出每一个整数出现的次数。按出现次数从多到少的顺序输出。

输入格式
  输入的第一行包括一个整数n,表示给定数字的个数。

  第二行包括n个整数。相邻的整数之间用一个空格分隔,表示所给定的整数。
输出格式
  输出多行,每行包括两个整数,分别表示一个给定的整数和它出现的次数。按出现次数递减的顺序输出。

假设两个整数出现的次数一样多,则先输出值较小的。然后输出值较大的。

例子输入
12

5 2 3 3 1 3 4 2 5 2 3 5
例子输出
3 4

2 3

5 3

1 1

4 1
评測用例规模与约定

  1 ≤ n ≤ 1000,给出的数都是不超过1000的非负整数。

思路:此题不算非常难,最难的点在相等的次数要以值最小的先输出,也就是先按字数降序排列,次数一致的再按整数升序排列,最后输出。

一開始是想着一个TreeMap解决,然后按V值排序。这样提交时。仅仅得70分,有case只是。后面想着还是再写一个类保存num和count吧。再实现comparator接口。

按规则排序就可以。

代码可能不是非常精简,如有更好的方法,能够跟帖说明。

代码例如以下:

package sds;

import java.util.*;

public class Main {
public static void main(String[] args){
//接受输入
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
//得到数组a
int[] a = new int[n];
for(int i = 0; i < n; i++){
a[i] = sc.nextInt();
}
//统计次数
Map<Integer,Integer> map = new HashMap<Integer, Integer>();
for(int i = 0; i < n; i++){
if(map.get(a[i]) == null){
map.put(a[i],1);
}else{
map.put(a[i],map.get(a[i]) + 1);
}
}
ValueComparator bvc = new ValueComparator();
List<NumCount> list = new ArrayList<NumCount>();
//加入到list
for(int key:map.keySet()){
NumCount count = new NumCount(key, map.get(key));
list.add(count);
}
Collections.sort(list, bvc);//排序
//打印
for(int i = 0; i < list.size();i++){
System.out.println(list.get(i).getNum() + " " + list.get(i).getCount());
}
}
} //实现排序
class ValueComparator implements Comparator<NumCount> { @Override
public int compare(NumCount o1, NumCount o2) {
if(o1.getCount() > o2.getCount())
return -1;//降序排列
if(o1.getCount() < o2.getCount())
return 1;
if(o1.getNum() > o2.getNum())
return 1;//假设次数同样。再按整数升序
if(o1.getNum() < o2.getNum())
return -1;
return 0;
}
}
//保存数字和次数
class NumCount{
private int num;
private int count; public NumCount(int num,int count) {
this.num = num;
this.count = count;
} public int getNum() {
return num;
} public void setNum(int num) {
this.num = num;
} public int getCount() {
return count;
} public void setCount(int count) {
this.count = count;
} }

CCF计算机职业资格认证 2015年3月第2题 数字排序 解法和思路的更多相关文章

  1. CCF计算机职业资格认证考试题解

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF计算机职业资格认证考试题解 CCF计算机软件能力认证(简称CCF CSP认证)是CCF计算机职业资格认证系 ...

  2. CCF计算机职业资格认证考试 201809-2 买菜

    以下内容过于幼稚,请大佬自觉绕道.. 题目描述: 时间限制:1.0s内存限制:256.0MB问题描述:问题描述 小H和小W来到了一条街上,两人分开买菜,他们买菜的过程可以描述为,去店里买一些菜然后去旁 ...

  3. CCF CSP 201503-2 数字排序

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201503-2 数字排序 问题描述 给定n个整数,请统计出每个整数出现的次数,按出现次数从多到 ...

  4. 我的Python成长之路---第一天---Python基础(作业1:登录验证)---2015年12月26日(雾霾)

    作业一:编写登录接口 输入用户名密码 认证成功系那是欢迎信息 输错三次后锁定 思路: 1.参考模型,这个作业我参考了linux的登录认证流程以及结合网上银行支付宝等锁定规则 1)认证流程参考的是Lin ...

  5. 2015年3月阿里内推(c++研发)实习生电面经历

    2015年3月开学开始就听说阿里会有内推,果不其然在师兄的引荐下推了菜鸟网络,但是在学校的BBS上看到了阿里云部门,而且要会C++,这使我更感兴趣,重新选择了方向,当然最后选择了阿里云.在此分享一下三 ...

  6. TIOBE 2015年7月编程语言排行榜:C++的复兴

    TIOBE 2015年7月编程语言排行榜:C++的复兴 发表于2015-07-13 17:03| 16086次阅读| 来源CSDN| 128 条评论| 作者钱曙光 编程语言排行榜TIOBEC++ 摘要 ...

  7. 2015年12月28日 Java基础系列(六)流

    2015年12月28日 Java基础系列(六)流2015年12月28日 Java基础系列(六)流2015年12月28日 Java基础系列(六)流

  8. 2015年12月13日 spring初级知识讲解(四)面向切面的Spring

    2015年12月13日 具体内容待补充...

  9. 2015年8月18日,杨学明老师《技术部门的绩效管理提升(研讨会)》在中国科学院下属机构CNNIC成功举办!

    2015年8月18日,杨学明老师为中国网络新闻办公室直属央企中国互联网络中心(CNNIC)提供了一天的<技术部门的绩效管理提升(研讨会)>培训课程.杨学明老师分别从研发绩效管理概述.研发绩 ...

随机推荐

  1. MFC数据类型转换 _itoa atoi、atof、itoa、itow _itoa_s

    _itoa 功能:把一整数转换为字符串 用法:char * _itoa(int value, char *string, int radix); 详细解释: _itoa是英文integer to ar ...

  2. xen hypercall 的应用层实现

    一句话描述: xen hypercall 在应用层的实现,最终都变成对  /proc/xen/privcmd 的 ioctl 系统调用 我们知道,xen 在应用层最上层的接口是 libxl , 基本上 ...

  3. git的使用01

    直接下载安装git,这里就不演示了,如果安装成功,在桌面任意空白处单击鼠标右键,会多出两个选项 Git Gui Here和Git Bash Here,我们一般使用git bash here 右键之后点 ...

  4. docker入门之:centos6.5 安装docker

    centos6.5 : 使用EPEL库安装docker: # sudo yum install -y  http://mirrors.yun-idc.com/epel/6/i386/epel-rele ...

  5. 多线程设计模式 - Future模式之JAVA原生实现

    在之前一篇博客中介绍了Future设计模式的设计思想以及具体实现,今天我们来讲一下使用JDK原生的包如何实现. JDK内置的Future主要使用到了Callable接口和FutureTask类. Ca ...

  6. PHP防止表单重复提交的解决方法

    PHP+SESSION防止表单重复提交 index.php 当前表单页面is_submit设为0 SESSION_START(); $_SESSION['is_submit'] = 0; <fo ...

  7. Ngnix 安装常见错误的处理

    错误:   解决方案:(联网下) 出现上面的问题是由于没有c++编译器造成 # yum -y install gcc-c++   使用上面的命令即可安装c++解决问题 如果确实c编译器,使用如下命令解 ...

  8. Properties文件工具读取类

    import java.io.IOException;import java.io.InputStream;import java.util.Properties; public class Comm ...

  9. ReactiveCocoa(二)

    前言 通过ReactiveCocoa(一)的学习,相信大家对ReactiveCocoa有了一些基本认识吧.下面就让我们来学习ReactiveCocoa的一些基本使用吧! ReactiveCocoa基本 ...

  10. PMBOK及PMP考试精要

    PROJECT MANAGEMENT KNOWLEDGE AREAS项目管理知识体系 2 PROJECT LIFE CYCLE / PROJECT MANAGEMENT PROCESS GROUPS项 ...