博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode] Max Points on a Line
阅读量:7077 次
发布时间:2019-06-28

本文共 1469 字,大约阅读时间需要 4 分钟。

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

经过同一个点且斜率相等的直线一定是同一条直线,所以我们只要分别计算每一个点与其它点的直线的斜率,统计斜率的个数,找出最大值。可以使用double来表示斜率,使用map<double, int>来统计个数。但是有两点要注意,那就是:

(1) 如果直线与x轴垂直,此时斜率是无穷大,要单独处理

(2) 所给的点中有些是相同的点,此时也要特殊处理一下。

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 public:12     int maxPoints(vector
& points) {13 int res = 0, same_cnt, ver_cnt, cnt;14 unordered_map
mp;15 double k;16 for (int i = 0; i < points.size(); ++i) {17 same_cnt = ver_cnt = cnt = 0;18 mp.clear();19 for (int j = 0; j < points.size(); ++j) {20 if (points[i].x == points[j].x) {21 if (points[i].y == points[j].y) {22 ++same_cnt; 23 continue;24 }else {25 ++ver_cnt;26 cnt = max(cnt, ver_cnt);27 }28 } else {29 k = (double) (points[i].y - points[j].y) / (points[i].x - points[j].x);30 ++mp[k];31 cnt = max(cnt, mp[k]);32 }33 }34 res = max(res, cnt + same_cnt);35 }36 return res;37 }38 };

 

转载地址:http://wkcml.baihongyu.com/

你可能感兴趣的文章
波音737 MAX全球禁飞,外墙清洗行业安全同样不容小觑
查看>>
魔窗mLink发布2019收费标准,20W年费是物有所值?还是重度收费?
查看>>
新版pyecharts,Python可视化so easy and powerful !
查看>>
小程序国际化实现方式
查看>>
Node.js学习之(第二章:http模块)
查看>>
设计模式 小记
查看>>
好程序员web前端精讲 web前端三要素
查看>>
C#入门1 0 与J2ee对立的平台 net
查看>>
不存在过时的行业——画饼系列
查看>>
Leetcode PHP题解--D43 589. N-ary Tree Preorder Traversal
查看>>
阿里云:面向5G时代的物联网无线连接服务
查看>>
spring cloud微服务分布式云架构-Spring Cloud Bus
查看>>
Java springcloud B2B2C o2o多用户商城 springcloud架构(十):服务网关zuul初级篇
查看>>
WebVeiw播放H5的video标签的问题
查看>>
为什么说BCH是最安全的数字货币之一?
查看>>
Spring Cloud--Honghu Cloud分布式微服务云系统—组件化
查看>>
Java知识点杂谈
查看>>
C++/Debug模式查看EFL(标志寄存器)详解
查看>>
我的友情链接
查看>>
jsp页面中出现的java代码之国际化
查看>>