LeetCode : Max Points on a Line
2014-05-21 17:42
344 查看
Given n points on a 2D plane, find the maximum number of points that lie on the same straight line.
int maxPoints(vector<Point> &points) { int length=points.size(); int maxpoints=0; if(length<1) return 0; if(length==1) return 1; double *Slope=new double[length-1]; multimap<double ,double> mp; multimap<double ,double> mpTemp; for (int j = 0; j < length; j++) { Point p=points[j]; double x0=p.x,y0=p.y; double x1=0,y1=0; double k=0;//斜率 int equalNum=0; multimap<double,double >::iterator iter; multimap<double,double >::iterator iterTemp; multimap<double,double >::iterator iter1; for (int i = 0; i < length; i++) { x1=points[i].x; y1=points[i].y; if((x1-x0)!=0) { k=(y1-y0)/(x1-x0); } else if((x1-x0)==0&&(y1-y0)!=0) { k=1.79769e+308; } else if((x1-x0)==0&&(y1-y0)==0) { equalNum++; continue; } iter=mp.find(k); if(iter==mp.end()) { mp.insert(pair<double,double >(k,2)); } else { iter->second+=1; } } if(equalNum>1){ for(iter=mp.begin();iter!=mp.end();++iter){ iter->second+=1; } } for (iterTemp=mp.begin(); iterTemp!=mp.end(); iterTemp++) { mpTemp.insert(pair<double,double>(iterTemp->second,iterTemp->first)); } iter1=mpTemp.end(); if(mpTemp.size()>0) { iter1--; if(iter1->first>maxpoints){ maxpoints=iter1->first; } } else { maxpoints=equalNum; } mpTemp.clear(); mp.clear(); } return maxpoints; }
相关文章推荐
- 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
- [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
- Max Points on a Line | leetcode
- 【LeetCode】Max Points on a Line
- [leetcode] Max Points on a Line
- Leetcode 141: 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
- leetcode Max Points on a Line
- Leetcode:Max Points on a Line
- Leetcode: max-points-on-a-line