您的位置:首页 > 其它

149. Max Points on a Line

2016-12-05 01:18 316 查看
题目:

Given n points
on a 2D plane, find the maximum number of points that lie on the same straight line.

总结:

浪费了一个多小时, 总结,头脑不清醒的时候,就不要编代码了。休息十分钟,然后清醒的投入战斗。

代码:

/**
* 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) {

int n = points.size();
if (n < 3) return n;
int ans = 0;
for (int i = 0; i < n; i++){
unordered_map<double, int> m;
int same = 1;
int local = 0;
for (int j = i + 1; j < n; j++)
{
int ls = 1;
if (points[i].y == points[j].y && points[i].x == points[j].x)
same++;
else{
double slope = points[i].x == points[j].x ? INT_MAX : double(points[i].y - points[j].y) / double(points[i].x - points[j].x);
m[slope]++;
}

}

for (auto it : m)
local = max(local, it.second);
ans =max(ans, local + same);
}
return ans;

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