题目
题目来源:Link
给定平面上的n个点,问是否存在一条平行于y轴的直线,使得这n个点相对于这条直线对称。
代码
package com.graph;
import java.util.*;
public class Solution{
public int solve(int[][] points){
if(points==null || points.length==0) return -1;
int n = points.length;
if(n%2==1) return -1;
Map<Integer, Set<Integer>> map = new HashMap<Integer, Set<Integer>>();
int minx=0;
int maxx=0;
for(int i=0; i<n; i++) {
minx=Math.min(minx, points[i][0]);
maxx=Math.max(maxx, points[i][0]);
if(!map.containsKey(points[i][1])) {
map.put(points[i][1], new HashSet<Integer>());
}
map.get(points[i][1]).add(points[i][0]);
}
for(int i=0; i<n; i++) {
if(!map.get(points[i][1]).contains(minx+maxx-points[i][0])) {
return -1;
}
}
return 0;
// //将点按照x轴方向排起来
// Arrays.sort(points, new Comparator<int[]>() {
// @Override
// public int compare(int[] a, int[] b) {
// if(a[0]>b[0])
// return 1;
// else if(a[0]<b[0])
// return -1;
// return 0;
// }
// });
// //所有对称的x和相同
// int p = (points[0][0]+points[n-1][0]);
//
}
}