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;
        }
    };
  • 相关阅读:
    执行truncate引发ORA-02266的问题分析
    一文搞懂MySQL-8.0 redo优化
    写给迷茫中的大一大二的学弟学妹,学渣逆袭中的个人经历与心得
    99+好友共同关注,公众号推荐
    Cesium
    Cesium
    Cesium
    Cesium
    虚拟化学习笔记-KVM虚拟化跨机迁移原理
    虚拟化学习笔记-KVM虚拟化跨机迁移原理
  • 原文地址:https://www.cnblogs.com/winscoder/p/3473032.html
Copyright © 2011-2022 走看看