Given n points on a 2D plane, find the maximum number of points that lie on the same straight line.
分析: 任取兩點組成的直線,看有多少點在其上面。
注意: 考慮 3 種情況: 兩點重合; 斜率為無窮大; 正常情況
/**
* 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 &points) {
int max_points(0);
double a(0), b(0); // denote a straight line
LINE_TYPE line_type(LINE);
if(points.size() == 0) return 0;
else if(points.size() == 1) return 1;
for(int i=0; i(points[j].x - points[i].x); //tangent
b = points[i].y - a * points[i].x;
}
// compute how many points on the line
int point_count(2);
for(int k=0; k