链接:https://oj.leetcode.com/problems/max-points-on-a-line/
描述:
points on a 2D plane, find the maximum number of points that lie on the same straight line.
解法:
注意重点的情况和斜率为无穷大时。
代码如下:
<pre name="code" class="cpp">int maxPoints(vector<Point> &points)
{
int size = points.size();
if(size <= 0 ) return 0;
map<double, int> statics;
int result = 0;
int max = 0;
int inf = 0;
int repeat = 0;
for(int i = 0; i < size; ++i)
{
max = 0;
inf = 0;
repeat = 0;
statics.clear();
for(int j= 0; j < size; ++j)
{
if( i != j)
{
if(points[i].x != points[j].x){
double k = 1.0*(points[i].y - points[j].y)/(points[i].x - points[j].x);
if( statics.find(k) != statics.end()){
statics[k]++;
}else{
statics[k] = 1;
}
if(statics[k] > max)
max = statics[k];
}
else if( points[i].x == points[j].x &&
points[i].y != points[j].y)
{
inf++;
if( inf > max)
max = inf;
}else{
repeat++;
}
}
}
max = max + repeat + 1;
if( max > result)
result = max;
}
return result;
}