class Solution {
public:
int gcd(int a,int b){
return (b==0)?a:gcd(b,a%b);
}
int maxPoints(vector<vector<int>>& points) {
if(points.empty())return 0;
int res=0;
for(int i=0;i<points.size();++i){
map<int,map<int,int>>m;
int over=0;
int max_c=0;
int x1=points[i][0];
int y1=points[i][1];
for(int j=i+1;j<points.size();++j){
int x=x1-points[j][0];
int y=y1-points[j][1];
if(x==0&&y==0){
++over;
continue;
}
int g=gcd(x,y);
x/=g;
y/=g;
if(m[x][y]==0)
m[x][y]=1;
else ++m[x][y];
if(m[x][y]>max_c)
max_c=m[x][y];
}
res=max(res,max_c+over);
}
return res+1;
}
};
149. Max Points on a Line
最新推荐文章于 2021-06-24 08:43:46 发布