题解 | #知识竞赛#
知识竞赛
http://www.nowcoder.com/questionTerminal/2a9089ea7e5b474fa8f688eae76bc050
为什么这样遍历也行
在看不懂其他复杂的算法下,自己写了个简单遍历,这样也行?
实在不懂,有没有大佬解释一下。
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
int n=Integer.parseInt(scanner.nextLine());
PriorityQueue<double[]> q=new PriorityQueue<>((a1,b) -> {
double x=(a1[0]+ a1[1]);
double y=(b[0]+b[1]);
if(x>y){ return -1;}
else{return 1;}
});
for(int i=0;i<n;i++){
String[] s=scanner.nextLine().split(" ");
q.offer(new double []{Integer.parseInt(s[0]),Integer.parseInt(s[1])});
}
double p1[]=q.poll();
double p2[]=q.poll();
double min=0;
while (q.size()>0){
if(min<Math.min((p1[1]+p2[1])/2.0,(p1[0]+p1[0])/2.0)){
min=Math.min((p1[1]+p2[1])/2.0,(p1[0]+p1[0])/2.0);
}
p1=p2;
p2=q.poll();
}
System.out.println(min);
}
}