leetcode之Max Points on a Line
阿新 • • 發佈:2018-12-16
問題描述如下:
Given n points on a 2D plane, find the maximum number of points that lie on the same straight line.
cpp程式碼如下:
class Solution { public: int maxPoints(vector<Point> &points) { int size_=points.size(); if(size_==0)return 0; int ans=0; for(int i=0;i<size_;++i){ map<float,int> cnts; int ver_cnt=1; int same=0; for(int j=i+1;j<size_;++j){ int x=points[i].x-points[j].x; int y=points[i].y-points[j].y; if(x==0&&y==0){ ++same; ver_cnt++; continue; } if(x==0){ ver_cnt++; continue; } float k=((float)y)/x; if(cnts.count(k)==0) cnts[k]=2; else cnts[k]++; } int tmp=ver_cnt; for(map<float,int>::iterator p=cnts.begin();p!=cnts.end();++p) if(p->second+same>tmp) tmp=p->second+same; if(tmp>ans)ans=tmp; } return ans; } };