给你一个数组 points
,其中 points[i] = [xi, yi]
表示 X-Y 平面上的一个点。求最多有多少个点在同一条直线上。
示例 1:
输入:points = [[1,1],[2,2],[3,3]]
输出:3
示例 2:
输入:points = [[1,1],[3,2],[5,3],[4,1],[2,3],[1,4]]
输出:4
提示:
1 <= points.length <= 300
points[i].length == 2
-104 <= xi, yi <= 104
points
中的所有点 互不相同
class Solution {
public int maxPoints(int[][] points) {
int max = 1;
for (int i = 0; i < points.length; i++) {
for (int j = i + 1; j < points.length; j++) {
int tmp = 2;
int[] A = points[i];
int[] B = points[j];
int vx1 = B[0] - A[0];
int vy1 = B[1] - A[1];
for (int k = j + 1; k < points.length; k++) {
int[] C = points[k];
int vx2 = C[0] - A[0];
int vy2 = C[1] - A[1];
if (vx1 * vy2 == vx2 * vy1) {
tmp++;
}
}
max = Math.max(tmp,max);
}
}
return max;
}
}
标签:tmp,直线,int,max,149,++,length,points,点数
From: https://blog.51cto.com/u_16040716/12341017