LeetCode__Max Points on a Line
2014-07-07 20:18
381 查看
Given n points on a 2D plane, find the maximum number of points that lie on the same straight line.
题意:是在二维平面上给出一系列点,要求最大的共线的点的数量。
首先想到平面上的点共线的定义,即穿过共同点且斜率相同。因此我们可以遍历每个点,找出其他点和这个点构成的直线的斜率,并用一个map记录下这个斜率下的点的数量。注意平面上相同的点要特殊处理。
class Solution { public: int maxPoints(vector<Point> &points) { if (points.size() == 0) return 0; int MAX = 1; map<double, int> maps; vector<Point>::iterator p; vector<Point>::iterator q; for (p = points.begin(); p != points.end(); ++p) { maps.clear(); int count = 1; for (q = p + 1; q != points.end(); ++q) { if (p->x == q->x && p->y == q->y) ++count; else ++maps[Slope(p, q)]; } int temp = 0; for (map<double, int>::iterator t = maps.begin(); t != maps.end(); ++t) { if (t->second > temp) temp = t->second; } MAX = (count + temp) > MAX ? (count + temp) : MAX; } return MAX; } private: double Slope(vector<Point>::iterator p, vector<Point>::iterator q) { if (p->x == q->x) return numeric_limits<double>::max(); return static_cast<double>(p->y - q->y) / static_cast<double>(p->x - q->x); } };
相关文章推荐
- Leetcode 149. Max Points on a Line
- LeetCode Max Points on a Line
- [LeetCode] 149. Max Points on a Line 共线点个数
- LeetCode-Max Points on a Line
- [LeetCode]149. Max Points on a Line 深入浅出讲解和代码示例
- 【leetcode】:max-points-on-a-line
- LeetCode "Max Points on a Line "
- LeetCode刷题笔录Max Points on a Line
- LeetCode | Max Points on a Line
- Leetcode: Max Points on a Line
- [leetcode-149]Max Points on a Line(java)
- Max Points on a Line(leetcode)
- LeetCode | Max Points on a Line
- Leetcode:Max Points on a Line
- [LeetCode] Max Points on a Line
- LeetCode Max Points on a Line
- Java for LeetCode 149 Max Points on a Line
- LeetCode: Max Points on a Line [149]
- LeetCode 149 — Max Points on a Line(C++ Java Python)
- 【LeetCode-Hard-1】【Max Points on a Line】【点集中最大共线数】