枚举:对于给定的n个位于同一二维平面上的点,求最多能有多少个点位于同一直线上
程序员文章站
2022-04-01 18:41:28
...
/**
* Definition for a point.
* class Point {
* int x;
* int y;
* Point() { x = 0; y = 0; }
* Point(int a, int b) { x = a; y = b; }
* }
*/
public class Solution {
public int maxPoints(Point[] points) {
//如果点的数目少于3 个,一定连线
if (points.length < 3 || points == null) {
return points.length;
}
int res = 0;//记录每条线路上的最大个数
//如果点的数目大于3 个
for (int i = 1; i < points.length; i++) {
int count = 0;//记录重合和不重合的点的个数
long a = points[i].x;
long b = points[i].y;
long xx = a - points[i - 1].x;
long yy = b - points[i - 1].y;
if (xx == 0 && yy == 0) {
//如果两点重合去寻找其他重合的点
for (int j = 0; j < points.length; j++) {
if (points[j].x== a&& points[j].y == b) {
count++;
}
}
} else {//如果两点不重合
for (int j = 0; j < points.length; j++) {
if ((points[j].x - a) * yy == (points[j].y - b) * xx) {//此方法即斜率等,避免了除法
count++;
}
}
}
res = Math.max(count, res);//更新最大数写法
}
return res;
}
}
推荐阅读
-
leetcode 给定二维平面上的n个点,找到位于同一直线上的最大点数
-
编程题—给定位于二维平面上的n个点,求出位于同一条直线上的最大点数
-
给定二维平面上的n个点,找到位于同一直线上的最大点数
-
LeetCode:对于给定的n个位于同一二维平面上的点,求最多能有多少个点位于同一直线上
-
[leetcode]给定二维平面上的n个点,找出位于同一直线上的点的最大数目
-
Leetcode打卡2:对于给定的n个位于同一二维平面上的点,求最多能有多少个点位于同一直线上
-
给定二维平面上的n个点,找出位于同一直线上的点的最大数目
-
对于给定的n个位于同一二维平面上的点,求最多能有多少个点位于同一直线上java实现
-
枚举:对于给定的n个位于同一二维平面上的点,求最多能有多少个点位于同一直线上
-
对于给定的n个位于同一二维平面上的点,求最多能有多少个点位于同一直线上