其他分享
首页 > 其他分享> > 149. 直线上最多的点数

149. 直线上最多的点数

作者:互联网

149. 直线上最多的点数

给你一个数组 points ,其中 points[i] = [xi, yi] 表示 X-Y 平面上的一个点。求最多有多少个点在同一条直线上。

 

示例 1:

输入:points = [[1,1],[2,2],[3,3]]
输出:3

示例 2:

输入:points = [[1,1],[3,2],[5,3],[4,1],[2,3],[1,4]]
输出:4

 

提示:

 

 

 

解析:

两点式(x - x1) * (y2 - y1) = (y - y1) * (x2 - x1),然后暴力就好了

class Solution {
public:
    int maxPoints(vector<vector<int>>& points) {
        if(points.size() == 1) return 1;
        int max_cnt = 0;
        for(int i = 0; i < points.size(); i++)
        {
            int x1 = points[i][0], y1 = points[i][1];
            for(int j = i + 1; j < points.size(); j++)
            {
                int x2 = points[j][0], y2 = points[j][1];
                int cnt = 0;
                for(int k = j + 1; k < points.size(); k++)
                {
                    int x = points[k][0], y = points[k][1];
                    if((x - x1) * (y2 - y1) == (y - y1) * (x2 - x1))
                        cnt++;

                }
                max_cnt = max(max_cnt, cnt + 2);                


            }

        }
        return max_cnt;





    }
};

 

 

 

 

 

标签:直线,cnt,int,max,149,points,y1,点数,x1
来源: https://www.cnblogs.com/WTSRUVF/p/16687403.html