某学校举行活动,需要从5名同学里面挑出两位身高最接近的做司仪,输入5个身高值[160~190之间],输出最接近的两个身高。如果身高差值出现相同情况,则输出身高最高的两个。输出身高
顺序为先小后大。
运行时间限制: 无限制
内存限制: 无限制
输入: 输入5个身高值[160~190之间],以空格隔开
输出: 输出最接近的两个身高,如果身高差值出现相同情况,则输出身高最高的两个,输出身高顺序为先小后大。
样例输入: 175 177 178 181 180
样例输出: 180 181
public void getShenGao(){
Scanner sc=new Scanner(System.in);
String[] input=sc.nextLine().split(" ");
int len=input.length;
LinkedHashMap<String,Integer> lhm=new LinkedHashMap<String,Integer>();
for(int i=0;i<len-1;i++){
for(int j=i+1;j<len;j++){
int res=Integer.valueOf(input[i])-Integer.valueOf(input[j]);
if(res<0){
lhm.put(input[i]+" "+input[j], -res);
}else{
lhm.put(input[j]+" "+input[i], res);
}
}
}
List<Map.Entry<String,Integer>> list=new ArrayList<Map.Entry<String,Integer>>(lhm.entrySet());
Collections.sort(list,new Comparator<Map.Entry<String,Integer>>(){//按身高差值大小排序
public int compare(Entry<String, Integer> o1,Entry<String, Integer> o2) {
return o1.getValue()-o2.getValue();}});
int min=list.get(0).getValue();
List<String> li=new ArrayList<String>();
for(Map.Entry<String,Integer> map:list){
if(map.getValue()==min){
li.add(map.getKey());
}
}
Collections.sort(li);//差值相同时按身高排序
System.out.println(li.get(li.size()-1));
}