题目描述
给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上。
示例:
输入: [[1,1],[2,2],[3,3]]
输出: 3
解释:
^
|
| o
| o
| o
±------------>
0 1 2 3 4
示例2:
输入: [3,3,7,7,10,11,11]
输出: 10
题目思路
暴力法
直接查找元素
class Solution {
public int maxPoints(int[][] points) {
if(points.length<3)return points.length;
int maxp = 2;
for(int i=0;i<points.length-1;i++){
for(int j=i+1;j<points.length;j++){
int temp = 0;
long x1 = points[i][0],y1 = points[i][1];
long x2 = points[j][0],y2 = points[j][1];
if(x1==x2&&y1==y2){
//如果重复则(x2,y2)取和(x1,y1)不同的任意一点
x2++;
y2++;
}
for(int k=0;k<points.length;k++){
//遍历所有点,统计在直线上的点
long x = points[k][0];
long y = points[k][1];
if(((y-y1)*(x2-x1)==(x-x1)*(y2-y1))){
temp++;
}
}
maxp = Math.max(maxp,temp);
}
}
return maxp;
}
}