Given n points on a 2D plane, find the maximum number of points that lie on the same straight line.
Example 1:
Input: [[1,1],[2,2],[3,3]] Output: 3 Explanation: ^ | | o | o | o +-------------> 0 1 2 3 4
Example 2:
Input: [[1,1],[3,2],[5,3],[4,1],[2,3],[1,4]] Output: 4 Explanation: ^ | | o | o o | o | o o +-------------------> 0 1 2 3 4 5 6
NOTE: input types have been changed on April 15, 2019. Please reset to default code definition to get new method signature.
class Solution {
public:
int maxPoints(vector<vector<int>>& points) {
int res = 0;
for (int i = 0; i < points.size(); i ++) {
int same = 1;
for (int j = i+1; j < points.size(); j ++) {
long long x1 = points[i][0], y1 = points[i][1];
long long x2 = points[j][0], y2 = points[j][1];
if (x1 == x2 && y1 == y2) {
same ++;
continue;
}
int temp = 0;
for (int k = 0; k < points.size(); k ++) {
long long x3 = points[k][0], y3 = points[k][1];
if ((y3-y1)*(x3-x2) == (y3-y2)*(x3-x1))
temp ++;
}
res = max(res, temp);
}
res = max(res, same);
}
return res;
}
};