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;
        }
    };
  • 相关阅读:
    卸载了PL/SQL Developer,说一下与Toad for Oracle的对照
    列举游戏开发过程中的一些不良现象
    vue23:vue-loader
    vue22 路由
    vue21 slot占位
    vue20 父子组件数据交互
    vue19 组建 Vue.extend component、组件模版、动态组件
    vue18 动画
    vue17 $watch 监听数据变化
    vue16 自定义键盘属性
  • 原文地址:https://www.cnblogs.com/winscoder/p/3473032.html
Copyright © 2011-2022 走看看