判断共线,可以根据两个点列出相应的方程式,把接下来的点代入判断。
也可以根据不同的两个点组成的向量是否共线判断,向量的很多知识都忘记了,大致共线的判断条件是
向量a=λ向量b,(a1,a2)=λ(b1,b2) a1=λb1 a2=λb2 所以a1/b1=a2/b2=λ 可以得到a1b2==a2b1
所以我们根据这个条件判断不同的两个点组成的向量是否共线 如果共线就在同一条直线上,我们就可以更新点的数目.
class Solution {
public int[] bestLine(int[][] points) {
int length= points.length;
int num=0;
int maxnum=0;
int[] res=new int[2];
for(int i=0;i<length-1;i++)
{
for(int j=i+1;j<length;j++)
{
if(length-1-j+1+1<=maxnum) {
break;
}
num=2;
int a1=points[j][0]-points[i][0];
int a2=points[j][1]-points[i][1];
for(int k=j+1;k<length;k++)
{
int b1=points[k][0]-points[i][0];
int b2=points[k][1]-points[i][1];
if(a1*b2==a2*b1) {
num++;
}
}
if(num>maxnum)
{
maxnum=num;
res[0]=i;
res[1]=j;
}
}
}
return res;
}
}