class Solution {
public:
int maxPoints(vector<Point> &points) {
if(points.size()<3)return points.size();
int ans=0;
for(int i=0;i<points.size();i++)
{
int vcnt=0,dup=0,curmax=1;
map<double,int>mp;
for(int j=0;j<points.size();j++)
{
if(i!=j)
{
double x1=points[i].x-points[j].x;
double y1=points[i].y-points[j].y;
if(x1==0&&y1==0)
{
dup++;
}
else if(x1==0)
{
if(vcnt==0)vcnt=2;
else vcnt++;
curmax=max(curmax,vcnt);
}
else{
double k=y1/x1;
if(mp.find(k)==mp.end())mp[k]=2;
else mp[k]++;
curmax=max(curmax,mp[k]);
}
}
}
ans=max(ans,curmax+dup);
}
return ans;
}
};
网友评论