题目:
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;
}
};