当前位置:网站首页>LeetCode 0149. Maximum number of points on a line
LeetCode 0149. Maximum number of points on a line
2022-08-01 05:32:00 【Tisfy】
【LetMeFly】149.直线上最多的点数
力扣题目链接:https://leetcode.cn/problems/max-points-on-a-line/
给你一个数组 points ,其中 points[i] = [xi, yi] 表示 X-Y 平面上的一个点.求最多有多少个点在同一条直线上.
示例 1:

输入:points = [[1,1],[2,2],[3,3]] 输出:3
示例 2:

输入:points = [[1,1],[3,2],[5,3],[4,1],[2,3],[1,4]] 输出:4
提示:
1 <= points.length <= 300points[i].length == 2-104 <= xi, yi <= 104points中的所有点 互不相同
方法一:Look at the slope of all other points with this point
The first layer traverses each point.
然后,The second level of traversal traverses each point again,Find the slope between two points,and count with a hash table.
Because they all go through the first point,So points with the same slope are all on a straight line.
Take the maximum number of points with the same slope,It is in the line passing through the first point,The point traversed by the line with the most points.
关于精度问题,C++中使用long double可以通过.
- 时间复杂度 O ( n 2 ) O(n^2) O(n2),其中 n n n是点的个数
- 空间复杂度 O ( n ) O(n) O(n)
AC代码
C++
long double ONE = 1;
class Solution {
public:
int maxPoints(vector<vector<int>>& points) {
int ans = 0;
int n = points.size();
for (int i = 0; i < n; i++) {
unordered_map<long double, int> ma;
int thisAns = 0;
for (int j = 0 ; j < n; j++) {
if (i == j)
continue;
long double k = ONE * (points[j][1] - points[i][1]) / (points[j][0] - points[i][0]);
ma[k]++;
thisAns = max(thisAns, ma[k]);
}
ans = max(ans, thisAns + 1);
}
return ans;
}
};
同步发文于CSDN,原创不易,转载请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/126084170
边栏推荐
- 字符中的第一个唯一字符
- pytroch、tensorflow对比学习—搭建模型范式(构建模型方法、训练模型范式)
- Selenium: Manipulating Cookies
- Selenium:鼠标、键盘事件
- vim配置+ctag像source insight一样方便阅读代码
- The solution to the inconsistency between the PaddleX deployment inference model and the GUI interface test results
- Selenium:操作JS
- state compressed dp
- matlab simulink 粒子群优化模糊pid控制的电机泵
- WPF项目-按着键盘方向键,移动格子盒子效果
猜你喜欢
随机推荐
2022年湖南工学院ACM集训第六次周测题解
pytroch、tensorflow对比学习—专栏介绍
Selenium: form switching
Selenium:鼠标、键盘事件
导致锁表的原因及解决方法
中国的机器人增长
曲柄滑块机构运动分析和参数优化
pytorch、tensorflow对比学习—张量
ORACLE modify another user package (package)
使用string 容器翻转 字母
第6章——数据库的安全性
HJS-DE1/2时间继电器
Vsce package after the Command failed: NPM list - production - parseable - the depth = 99999 - loglevel = error exception
About making a progress bar for software initialization for Qt
uva12326
(2022 Nioke Duo School IV) H-Wall Builder II (Thinking)
权重等比分配
Induction jian hai JustFE 2022/07/29 team, I learned the efficient development summary (years)
WebSocket实现聊天功能
DL-31/6电流继电器









