码迷,mamicode.com
首页 > 其他好文 > 详细

No.149 Max Point on a Line

时间:2015-05-25 23:56:17      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:

No.149 Max Point on a Line

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

法一:考虑不周,一条直线上的点会重复计数,但没找到解决方法【wrong】

Input: [[0,0],[-1,-1],[2,2]]
Output: 4
Expected: 3

技术分享
 1 /**
 2  * Definition for a point.
 3  * struct Point {
 4  *     int x;
 5  *     int y;
 6  *     Point() : x(0), y(0) {}
 7  *     Point(int a, int b) : x(a), y(b) {}
 8  * };
 9  */
10 class Solution 
11 {
12 public:
13     int maxPoints(vector<Point>& points)
14     {
15      //输入:二维平面上的一组点
16      //输出:同一条直线上的点的最大数量
17      //思路:两层循环,依次找出每两个点组成的直线的斜率slope,O(n2)本以为很大,还好,相信自己
18      //         将得到的数据存到map中:key为斜率,value为该斜率的点的个数
19         int count = points.size() ;
20         if( count == 0)
21             return 0;
22         if( count == 1)
23             return 1;
24         if( count == 2)
25             return 2;
26         
27         map<double, int> result;
28         double slope;
29         for(int i=0; i< count ; i++)
30             for(int j = i+1; j<count; j++)
31             {
32                 if(points[i].x == points[j].x)
33                     slope = numeric_limits<double>::max();
34                 else
35                     slope = (points[i]. y - points[j]. y)/(points[i]. x - points[j]. x);//除法!!分母
36                 if(result.find(slope) == result.end())
37                     result[slope] = 2;
38                 else
39                     result[slope]++;
40             }
41         
42         int max = 0;
43         for(auto const i : result)
44         {
45             if(i.second > max)
46                 max = i.second;
47         }
48         return max;
49     }
50 
51 };
View Code

法二:【几次提交,总是有点小问题】

输入:二维平面上的一组点
输出:同一条直线上的点的最大数量
思路:两层循环,依次找出每两个点组成的直线的斜率slope,O(n2)本以为很大,还好,相信自己
          将得到的数据存到map中:key为斜率,value为该斜率的点的索引的集合【可以去重】

 

 

No.149 Max Point on a Line

标签:

原文地址:http://www.cnblogs.com/dreamrun/p/4529073.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!