zoukankan      html  css  js  c++  java
  • max-points-on-a-line leetcode C++

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

    C++

    /**
     * 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:
        int maxPoints(vector<Point> &points) {
    		unordered_map<float,int> mp;
    		int maxNum = 0;
    		for(int i = 0; i < points.size(); i++){
    			mp.clear();
    			mp[INT_MIN] = 0;
    			int duplicate = 1;
    			for(int j = 0; j < points.size(); j++)
    			{
    				if(j == i) continue;
    				if(points[i].x == points[j].x && points[i].y == points[j].y){
    					duplicate++;
    					continue;
    				}
    				float k = points[i].x == points[j].x ? INT_MAX : (float)(points[j].y - points[i].y)/(points[j].x - points[i].x);
    				mp[k]++;
    			}
    			unordered_map<float, int>::iterator it = mp.begin();
    			for(; it != mp.end(); it++)
    				if(it->second + duplicate > maxNum)
    					maxNum = it->second + duplicate;
    		}
    		return maxNum;
        }
    };
  • 相关阅读:
    tab切换与表格展示
    ajax
    api
    slice() 方法
    iframe跳转
    快排序
    【问题排查】cpu占用过高排查
    LOJ6013 负载平衡 [最小费用最大流]
    随机序列 [思维题, 组合数]
    P1777 帮助 [状压dp]
  • 原文地址:https://www.cnblogs.com/vercont/p/10210275.html
Copyright © 2011-2022 走看看