您的位置:首页 > 其它

LeetCode Max Points on a Line 解题报告

2014-12-03 10:21 435 查看
class Solution {
public:
int maxPoints(vector<Point> &points) {
if(points.size()<2)return points.size();
int localmax=0,vertical=0,overlap=0,result=0;
for(int i=0;i<points.size();i++)
{
map<pair<int,int>,int> lines;
localmax=0;vertical=0;overlap=0;
for(int j=i+1;j<points.size();j++)
{
if(points[i].x==points[j].x&&points[i].y==points[j].y)
{overlap++;continue;}
else if(points[i].x==points[j].x)
vertical++;
else
{
int a=points[i].x-points[j].x;
int b=points[i].y-points[j].y;
int gcd=GCD(a,b);
a=a/gcd;
b=b/gcd;
lines[make_pair(a,b)]++;
localmax=max(localmax,lines[make_pair(a,b)]);
}
localmax=max(localmax,vertical);
}
result=max(result,overlap+localmax+1);
}
return result;
}
int GCD(int a,int b)
{
if(b==0)return a;
else return GCD(b,a%b);
}

};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: