当前位置: 首页 > news >正文

[LeetCode] 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.

经过同一个点且斜率相等的直线一定是同一条直线,所以我们只要分别计算每一个点与其它点的直线的斜率,统计斜率的个数,找出最大值。可以使用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<Point>& points) {
13         int res = 0, same_cnt, ver_cnt, cnt;
14         unordered_map<double, int> 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 };

 

相关文章:

  • Appium 三种wait方法(appium 学习之改造轮子)
  • 文件服务器 之 Debian下配置使用Subversion版本控制服务器
  • 浏览器缓存机制(转)
  • C#网络编程系列文章索引
  • iOS Web应用开发:运用HTML5、CSS3与JavaScript
  • Makefile 中:= ?= += =的区别
  • centos7zabbix-agen安装
  • vue-i18n beforeDestroy不能调用this.$t
  • 验证码识别并复制到剪切板
  • cheerp 简介
  • CSS 三角实现
  • 第十二章 Java内存模型与线程
  • 从源码分析如何优雅的使用 Kafka 生产者
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • 阿里云重庆大学大数据训练营落地分享
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • 2017前端实习生面试总结
  • angular组件开发
  • Druid 在有赞的实践
  • java正则表式的使用
  • Just for fun——迅速写完快速排序
  • maven工程打包jar以及java jar命令的classpath使用
  • PhantomJS 安装
  • python_bomb----数据类型总结
  • React的组件模式
  • sessionStorage和localStorage
  • Spring框架之我见(三)——IOC、AOP
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 理清楚Vue的结构
  • 批量截取pdf文件
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 用jQuery怎么做到前后端分离
  • 机器人开始自主学习,是人类福祉,还是定时炸弹? ...
  • #if 1...#endif
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • (10)Linux冯诺依曼结构操作系统的再次理解
  • (27)4.8 习题课
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (办公)springboot配置aop处理请求.
  • (超详细)语音信号处理之特征提取
  • (二)Eureka服务搭建,服务注册,服务发现
  • (四)linux文件内容查看
  • (算法)求1到1亿间的质数或素数
  • (提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战
  • (万字长文)Spring的核心知识尽揽其中
  • (循环依赖问题)学习spring的第九天
  • (一)u-boot-nand.bin的下载
  • (转)ABI是什么
  • 、写入Shellcode到注册表上线
  • .dwp和.webpart的区别
  • .mkp勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .NET 8.0 发布到 IIS