max points on a line

来源:互联网 发布:单机版进销存软件 编辑:程序博客网 时间:2024/05/16 15:47
const double INF=1E9;class Solution {public:        int maxPoints(vector<Point> &points) {        if(points.size()==0)           return 0;        unordered_map<float,int>mp;        int res=1;        for(int i=0;i<points.size()-1;i++)        {mp.clear();            int dup=0;            int ans=1;            for(int j=i+1;j<points.size();j++)            {                int deltax=points[j].x-points[i].x;                int deltay=points[j].y-points[i].y;                if(!deltax&!deltay)                   dup++;                else                   if(!deltax)                   {                       if(mp.find(INF)==mp.end())                          mp[INF]=2;                       else                          mp[INF]=mp[INF]+1;                        ans=max(ans,mp[INF]);                   }                   else                   {                       float k=1.0*deltay/deltax;                       if(mp.find(k)==mp.end())                           mp[k]=2;                       else                           mp[k]=mp[k]+1;                       ans=max(ans,mp[k]);                   }            }            res=max(res,ans+dup);        }        return res;    }};

0 0
原创粉丝点击