CCF计算机职业资格认证 2015年3月第2题 数字排序 解法和思路
第二行包括n个整数。相邻的整数之间用一个空格分隔,表示所给定的整数。
假设两个整数出现的次数一样多,则先输出值较小的。然后输出值较大的。
5 2 3 3 1 3 4 2 5 2 3 5
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题 数字排序 解法和思路的更多相关文章
- CCF计算机职业资格认证考试题解
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF计算机职业资格认证考试题解 CCF计算机软件能力认证(简称CCF CSP认证)是CCF计算机职业资格认证系 ...
- CCF计算机职业资格认证考试 201809-2 买菜
以下内容过于幼稚,请大佬自觉绕道.. 题目描述: 时间限制:1.0s内存限制:256.0MB问题描述:问题描述 小H和小W来到了一条街上,两人分开买菜,他们买菜的过程可以描述为,去店里买一些菜然后去旁 ...
- CCF CSP 201503-2 数字排序
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201503-2 数字排序 问题描述 给定n个整数,请统计出每个整数出现的次数,按出现次数从多到 ...
- 我的Python成长之路---第一天---Python基础(作业1:登录验证)---2015年12月26日(雾霾)
作业一:编写登录接口 输入用户名密码 认证成功系那是欢迎信息 输错三次后锁定 思路: 1.参考模型,这个作业我参考了linux的登录认证流程以及结合网上银行支付宝等锁定规则 1)认证流程参考的是Lin ...
- 2015年3月阿里内推(c++研发)实习生电面经历
2015年3月开学开始就听说阿里会有内推,果不其然在师兄的引荐下推了菜鸟网络,但是在学校的BBS上看到了阿里云部门,而且要会C++,这使我更感兴趣,重新选择了方向,当然最后选择了阿里云.在此分享一下三 ...
- TIOBE 2015年7月编程语言排行榜:C++的复兴
TIOBE 2015年7月编程语言排行榜:C++的复兴 发表于2015-07-13 17:03| 16086次阅读| 来源CSDN| 128 条评论| 作者钱曙光 编程语言排行榜TIOBEC++ 摘要 ...
- 2015年12月28日 Java基础系列(六)流
2015年12月28日 Java基础系列(六)流2015年12月28日 Java基础系列(六)流2015年12月28日 Java基础系列(六)流
- 2015年12月13日 spring初级知识讲解(四)面向切面的Spring
2015年12月13日 具体内容待补充...
- 2015年8月18日,杨学明老师《技术部门的绩效管理提升(研讨会)》在中国科学院下属机构CNNIC成功举办!
2015年8月18日,杨学明老师为中国网络新闻办公室直属央企中国互联网络中心(CNNIC)提供了一天的<技术部门的绩效管理提升(研讨会)>培训课程.杨学明老师分别从研发绩效管理概述.研发绩 ...
随机推荐
- 转载: CentOS/Linux 解决 SSH 连接慢
CentOS/Linux 解决 SSH 连接慢 现在连接Linux服务器一般都是使用SSH远程连接的方式.最近新装了一台服务器,发现telnet时速度很快,ping时一切也正常,但SSH连接的时候却很 ...
- 水(NOIP模拟赛Round #10)
题目描述: 小Z有一个长度为的数列.他有次令人窒息的操作,每次操作可以使某个数字或.他当然是希望这些数字的乘积尽量小了.为了简化题目,你只需输出操作完成后的数列即可. ———————————————— ...
- C# split字符串
string strSourse = "ab|||cdef"; string[] arr = strSource.Split(new string[]{"|||" ...
- XML技术总结之XDocument 和XmlDocument
引言 虽然现在Json在我们的数据交换中越来越成熟,但XML格式的数据还有很重要的地位. C#中对XML的处理也不断优化,那么我们如何选择XML的这几款处理类 XmlReader,XDocument ...
- Android (Notification)消息推送机制
从网上查询资料学习Android消息推送机制,效果图如下: 1.首先是布局文件代码 activity_main.xml <?xml version="1.0" encodin ...
- HDU 1114 【完全背包裸题】
Piggy-Bank Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Su ...
- HDU 2546 饭卡【贪心+01背包】
饭卡 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...
- ZOJ 3940 Modulo Query (2016年浙江省赛E题,区间折叠 + map运用)
题目链接 2016 ZJCPC Problem E 考虑一个开区间$[0, x)$对$a_{i}$取模的过程. $[0, x)$中小于$a_{i}$的部分不变,大于等于$a_{i}$的部分被切下来变 ...
- Count and Say (Array Length Encoding) -- LeetCode
The count-and-say sequence is the sequence of integers beginning as follows:1, 11, 21, 1211, 111221, ...
- [BZOJ2460][BJOI2011]元素(线性基)
2460: [BeiJing2011]元素 Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 2195 Solved: 1119[Submit][Sta ...