您的位置:首页 > 其它

Leetcode Max Points on a Line

2015-06-02 12:32 417 查看
Given n points
on a 2D plane, find the maximum number of points that lie on the same straight line.

题意是给定N个点,找到共线的点最多有多少个,求固定一个点points[i],求points[i]与points[j]之间的斜率,统计斜率出现的次数,注意斜率不存在的情况。

/**
* Definition for a point.
* struct Point {
*     int x;
*     int y;
*     Point() : x(0), y(0) {}
*     Point(int a, int b) : x(a), y(b) {}
* };
*/
class Solution {
public:
int maxPoints(vector<Point>& points) {
map<float,int> result;
int maxnum = 0;
int repeat;
for(int i=0; i<points.size(); i++)
{
result.clear();
repeat = 1;
result[INT_MAX]=0;
for(int j=0; j<points.size(); j++)
{
if(i==j) continue;
if(points[i].x==points[j].x&&points[i].y==points[j].y)
{
repeat++;
continue;
}
float temp =points[i].x==points[j].x?INT_MAX:float(points[i].y-points[j].y)/(points[i].x-points[j].x);
result[temp]++;
}
map<float,int>::iterator it;
for(it = result.begin(); it!=result.end(); it++)
{
if((it->second+repeat)>maxnum)
{
maxnum = it->second+repeat;
}
}

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