关键词:
【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 <= 300
points[i].length == 2
-104 <= xi, yi <= 104
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
leetcode第149题—直线上最多的点数—python实现(代码片段)
title:LeetCodeNo.149categories:OJLeetCodetags:ProgramingLeetCodeOJLeetCode第149题—直线上最多的点数自己代码的开源仓库:clickhere欢迎Star和Fork😃题目描述给你一个数组points,其中points[i]=[xi,yi]表示X-Y平面上的一个点。求最多有多少个... 查看详情
leetcode第149题—直线上最多的点数—python实现(代码片段)
title:LeetCodeNo.149categories:OJLeetCodetags:ProgramingLeetCodeOJLeetCode第149题—直线上最多的点数自己代码的开源仓库:clickhere欢迎Star和Fork😃题目描述给你一个数组points,其中points[i]=[xi,yi]表示X-Y平面上的一个点。求最多有多少个... 查看详情
题目地址(149.直线上最多的点数)(代码片段)
题目地址(149.直线上最多的点数)https://leetcode.cn/problems/max-points-on-a-line/题目描述给你一个数组points,其中points[i]=[xi,yi]表示X-Y平面上的一个点。求最多有多少个点在同一条直线上。 示例1:输入:points=[[1,1],[2,2],[... 查看详情
题目地址(149.直线上最多的点数)(代码片段)
题目地址(149.直线上最多的点数)https://leetcode.cn/problems/max-points-on-a-line/题目描述给你一个数组points,其中points[i]=[xi,yi]表示X-Y平面上的一个点。求最多有多少个点在同一条直线上。 示例1:输入:points=[[1,1],[2,2],[... 查看详情
149maxpointsonaline直线上最多的点数
给定二维平面上有n个点,求最多有多少点在同一条直线上。详见:https://leetcode.com/problems/max-points-on-a-line/description//***Definitionforapoint.*structPoint*intx;*inty;*Point():x(0),y(0)*Point(inta,intb):x(a),y(b)*;*/clas 查看详情
2021-09-03:直线上最多的点数。给你一个数组points,其中points[i]=[xi,yi]表示x-y平面上的一个点。求最多有多少个点在同一条直线上。力扣149。(代码片(代码片段)
2021-09-03:直线上最多的点数。给你一个数组points,其中points[i]=[xi,yi]表示X-Y平面上的一个点。求最多有多少个点在同一条直线上。力扣149。福大大答案2021-09-03:具体见代码。代码用golang编写。代码如下:packagem... 查看详情
maxpointsonaline(直线上最多的点数)(代码片段)
给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上。示例1:输入:[[1,1],[2,2],[3,3]]输出:3解释:^|| o| o| o +------------->0 1 2 34示例 2:输入:[[1,1],[3,2] 查看详情
leetcodeno.149直线上最多的点数(代码片段)
...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].l 查看详情
leetcodeno.149直线上最多的点数(代码片段)
一、题目描述给你一个数组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, 查看详情
直线上最多的点数
给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上。functionmaxPoints(points)if(points.length==1)return1letnumber=0for(leti=0;i<points.length-1;i++)letitem=points[i]for(letj=i+1;j<points.length;j++ 查看详情
直线上最多的点数(代码片段)
classSolutionpublicintmaxPoints(int[][]points)if(points.length==1)return1;Map<Double,Integer>map=newHashMap<>();intmax=Integer.MIN_VALUE;for(int[]point1:points)for(int[]point2:points)doublek=(double)(point2[1]-point1[1])/(double)(point2[0]-point1[0]);map.put(k,map.get... 查看详情
直线上最多的点数(代码片段)
classSolutionpublicintmaxPoints(int[][]points)if(points.length==1)return1;Map<Double,Integer>map=newHashMap<>();intmax=Integer.MIN_VALUE;for(int[]point1:points)for(int[]point2:points)doublek=(double)(point2[1]-point1[1])/(double)(point2[0]-point1[0]);map.put(k,map.get... 查看详情
数据结构与算法之深入解析“直线上最多的点数”的求解思路与算法示例(代码片段)
一、题目要求给你一个数组points,其中points[i]=[xi,yi]表示X-Y平面上的一个点,求最多有多少个点在同一条直线上。示例1:输入:points=[[1,1],[2,2] 查看详情
day4直线上最多的点数循环链表四数相加2(代码片段)
四数相加2对下一个题的方式有启发,使用dict存储后两个之和classSolution(object):deffourSumCount(self,A,B,C,D):Dict=foriinrange(len(C)):forjinrange(len(D)):ifC[i]+D[j]inDict:Dict[C[i]+D[j]]+=1else:Dict[ 查看详情
leetcode刷题模版:141-150
目录简介141.环形链表142.环形链表II143.重排链表144.二叉树的前序遍历145.二叉树的后序遍历146.LRU缓存【未实现】147.对链表进行插入排序148.排序链表149.直线上最多的点数150.逆波兰表达式求值结语简介Hello!非常感谢您阅读海轰的... 查看详情
sql总体上最多的球员(2008年-2016年)(代码片段)
直线交点数种类p2789直线交点数(代码片段)
题目平面上有N条直线,且无三线共点,那么这些直线能有多少不同的交点数?https://www.luogu.com.cn/problem/P2789题目分析我们将n条直线编号,分别称为直线1、直线2、…、直线n。直线2与直线1最多有一个交点,直线3与直线1和直线2... 查看详情
leetcode刷题模版:141-150
目录简介141.环形链表142.环形链表II143.重排链表144.二叉树的前序遍历145.二叉树的后序遍历146.LRU缓存【未实现】147.对链表进行插入排序148.排序链表149.直线上最多的点数150.逆波兰表达式求值结语简介Hello!非常感谢您阅读海轰的... 查看详情