public class Solution {
public int maxPoints(Point[] points) {
if (points.length == 0)
return 0;
if (points.length == 1)
return 1;
int maxP = 0;
int result = 0;
for (int i = 0; i < points.length; i ++) {
int same = 0;
int ver = 0;
int max = 0;
Hashtable<Double, Integer> table = new Hashtable<>();
for (int j = 0; j < points.length; j ++) {
if (i == j)
continue;
if (points[j].x == points[i].x && points[j].y == points[i].y)
same++;
else if (points[j].x == points[i].x && points[j].y != points[j].y)
ver++;
else {
double k = (double)(points[j].y - points[i].y) / (double)(points[j].x - points[i].x);
if (!table.containsKey(k)) {
table.put(k, 1);
if (max < 1) max = 1;
}
else {
int tmp = table.get(k);
tmp++;
table.put(k, tmp);
if (tmp > max) max = tmp;
}
}
}
maxP = (max > ver)? max + same + 1 : ver + same + 1;
if (maxP > result) result = maxP;
}
return result;
}
}
#LeetCode Max Points On A Line
最新推荐文章于 2019-10-13 11:03:53 发布