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;
        }
    };
  • 相关阅读:
    Lombok 安装、入门
    Centos 6.5中使用yum安装jdk
    Mysql规范和使用注意点(转)
    Java编码规范
    windows2016重新配置sid
    Postman POST接口请求无法获取数据
    微信修改密码
    SQL事务
    .net时间格式化
    SQL查询列是否有重复值
  • 原文地址:https://www.cnblogs.com/winscoder/p/3473032.html
Copyright © 2011-2022 走看看