给定二维平面上的n个点,找出位于同一直线上的点的最大数目
/**
- Definition for a point.
- class Point {
-
int x;
-
int y;
-
Point() { x = 0; y = 0; }
-
Point(int a, int b) { x = a; y = b; }
- }
*/
public class Solution {
public int maxPoints(Point[] points) {
if(points.length <= 2) return points.length;
int max = 2;
int n = points.length;
int x1, y1, x2, y2;
int k = 1;//相同斜率的点
int t = 0;//相同位置的点
int i, j, m;
for(i = 0; i < n; i++){
k = 1;
t = 0;
for(j = i + 1; j < n; j++){
x1 = points[i].x - points[j].x;
y1 = points[i].y - points[j].y;
if(x1 == 0 && y1 == 0) t++;
else {
k++;
for(m = j + 1; m < n; m++){
x2 = points[i].x - points[m].x;
y2 = points[i].y - points[m].y;
if(x1 * y2 == x2 * y1)k++;
}
}
if(k + t > max)max = k + t;
k = 1;
}
}
return max;
}
}