Leetcode Max Points on a Line

来源:互联网 发布:淘宝卖的好的飞机杯 编辑:程序博客网 时间:2024/04/30 08:14

Given n points on a 2D plane, find the maximum number of points that lie on the same straight line.

题意是给定N个点,找到共线的点最多有多少个,求固定一个点points[i],求points[i]与points[j]之间的斜率,统计斜率出现的次数,注意斜率不存在的情况。

/** * 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) {        map<float,int> result;        int maxnum = 0;        int repeat;        for(int i=0; i<points.size(); i++)        {            result.clear();            repeat = 1;            result[INT_MAX]=0;            for(int j=0; j<points.size(); j++)            {                if(i==j) continue;                if(points[i].x==points[j].x&&points[i].y==points[j].y)                {                    repeat++;                    continue;                }                float temp =points[i].x==points[j].x?INT_MAX:float(points[i].y-points[j].y)/(points[i].x-points[j].x);                result[temp]++;            }            map<float,int>::iterator it;            for(it = result.begin(); it!=result.end(); it++)            {                if((it->second+repeat)>maxnum)                {                    maxnum = it->second+repeat;                }            }                    }        return maxnum;    }};



0 0
原创粉丝点击