leetcode Max Points on a Line(*)
2014-07-24 18:55
381 查看
Given n points
on a 2D plane, find the maximum number of points that lie on the same straight line.
求平面内共线最多的点,统计与某一点斜率相同的其它点的数量,求最多数量的统计。这里注意斜率为无穷(垂直直线)和两个点相同的情况。
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) { if(points.size()<=2)return points.size(); map<double,int> kmap; int equalNum,verNum,curMax,maxNum=0; for(int i=0;i<points.size();i++){ kmap.clear();equalNum=1;verNum=1;curMax=0; for(int j=i+1;j<points.size();j++){ if(points[j].x==points[i].x){ verNum++; if(points[j].y==points[i].y)equalNum++; }else{ double k=1.0*(points[j].y-points[i].y)/(points[j].x-points[i].x); if(kmap.find(k)!=kmap.end())kmap[k]++; else kmap.insert(make_pair(k,1)); if(curMax<kmap[k])curMax=kmap[k]; } } if(maxNum<curMax+equalNum)maxNum=curMax+equalNum; if(maxNum<verNum)maxNum=verNum; } return maxNum; } };
相关文章推荐
- [leetcode] Max Points on a Line
- [LeetCode]Max Points on a Line
- LeetCode:max-points-on-a-line
- Max Points on a Line - LeetCode
- leetcode 第149题 Max Points on a Line
- Leetcode Max Points on a Line
- [LeetCode] Max Points on a Line
- [Leetcode][JAVA] Max Points on a Line
- [LeetCode]Max Points on a Line
- LeetCode149. 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[AC源码]
- LeetCode-max-points-on-a-line
- LeetCode149:Max Points on a Line
- Max Points on a Line - LeetCode
- Leetcode-max-points-on-a-line
- LeetCode(149) Max Points on a Line
- 【LeetCode】149. Max Points on a Line