zoukankan      html  css  js  c++  java
  • Max Points on a Line

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

    Analysis:

      This approach cost time complexity O(n^3).  

      1. If points less than 2 or all points locate at the same position, just output the points number.

      2. Find two points with different coordinates and check how many points other than these two are in this line. 

      3. Traverse all the points.  Keep updating the max points number.

    Code:

    /**
     * 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:
        bool allSamePoints(vector<Point> &points){
            for(int i=1;i<points.size();i++)
                if(points[i].x==points[i-1].x && points[i].y==points[i-1].y) return true;
                else  return false;
        }
        bool sameLine(Point i, Point j, Point k){
            return ((i.y-j.y)*(i.x-k.x)-(i.y-k.y)*(i.x-j.x))==0;
        }
        int maxPoints(vector<Point> &points) {
            if(points.size()<=1||allSamePoints(points))
                return points.size();
            int maxPoints = 2;    
            for(int i=0;i<points.size();i++){
                for(int j=i+1;j<points.size();j++){
                    if(points[i].x!=points[j].x||points[i].y!=points[j].y){
                        int n=2;
                        for(int k=0;k<points.size();k++){
                            if(k!=i&&k!=j&&sameLine(points[i],points[j],points[k]))
                                n++;
                        }
                        maxPoints=max(maxPoints,n);
                    }
                }  
            }
            return maxPoints;
        }
    };
  • 相关阅读:
    Pandas 数值计算和统计基础
    Pandas 基本技巧
    Pandas 索引和切片
    Pandas 数据结构Dataframe:基本概念及创建
    Pandas 数据结构Series:基本概念及创建
    Numpy 通用函数
    Numpy 随机数
    Numpy 索引及切片
    Numpy 练习题
    Python通过fork的方式防止僵尸进程
  • 原文地址:https://www.cnblogs.com/winscoder/p/3473032.html
Copyright © 2011-2022 走看看