暴力解法
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 j_iX = points[j][0] - points[i][0];
int j_iY = points[j][1] - points[i][1];
int count = 2;
for (int k = j + 1; k < points.length; k++) {
int k_iX = points[k][0] - points[i][0];
int k_iY = points[k][1] - points[i][1];
/**
* 为了避免小数造成的精度误差,转换为乘法
*/
if (j_iX * k_iY == j_iY * k_iX){
count++;
}
}
max = Math.max(max, count);
}
}
return max;
}
}
/**
* 时间复杂度 O(n^3)
* 空间复杂度 O(1)
*/
https://leetcode-cn.com/problems/max-points-on-a-line/