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

    Total Accepted: 49916 Total Submissions: 365731 Difficulty: Hard

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

    /**
     * Definition for a point.
     * struct Point {
     *     int x;
     *     int y;
     *     Point() : x(0), y(0) {}
     *     Point(int a, int b) : x(a), y(b) {}
     * };
     */
     
     /*
     输入:
     1.空
     2.一个点、两个点
     3.有多条斜率不存在的点怎么计算
     4.有重复的点怎么计算
     5.一条直线上有多个点
    
     */
    class Solution {
    public:
        int maxPoints(vector<Point>& points) {
            int points_size = points.size();
            if(points_size<=2){
                return points_size;
            }
    
            unordered_map<double,int> slopes;
            int vertical_slopes_points = 0;
            int  max_points = INT_MIN;
            
            for(int i=0;i<points_size;i++){
                int samePoints = 0;
                vertical_slopes_points = 0;
                slopes.clear();
                for(int j=i;j<points_size;j++){
                    if(points[i].x==points[j].x && points[i].y==points[j].y){
                        samePoints ++;
                    }else if(points[i].x==points[j].x){
                        vertical_slopes_points ++;
                    }else{
                        double k = (points[i].y-points[j].y)*1.0/(points[i].x-points[j].x);
                        slopes[k]++;
                    }
                }
    
                if(samePoints == points_size){
                    return samePoints;
                }
    
                vertical_slopes_points += samePoints;
                
                for(auto iter:slopes){
                    max_points = max(iter.second+samePoints,max_points);
                }
                
                max_points = max(vertical_slopes_points,max_points);
            }
            return max_points;
        }
    };
  • 相关阅读:
    HTML编写需要注意的事项
    Java中this、super用法
    多态性的表现形式
    面向对象
    用java实现冒泡排序法
    第一堂java web课
    mysql 复制中的 paxso 的两阶段和事务两阶段的区别
    github删除仓库
    git的介绍及使用
    github的介绍
  • 原文地址:https://www.cnblogs.com/zengzy/p/5050634.html
Copyright © 2011-2022 走看看