leetcode练习 直线上最多的点数

文章目录

题目描述

给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上。

示例:
输入: [[1,1],[2,2],[3,3]]
输出: 3
解释:
^
|
| o
| o
| o
±------------>
0 1 2 3 4

示例2:
输入: [3,3,7,7,10,11,11]
输出: 10

题目思路

暴力法
直接查找元素

class Solution {
    
    
    public int maxPoints(int[][] points) {
    
    
        if(points.length<3)return points.length;
        int maxp = 2;
        for(int i=0;i<points.length-1;i++){
    
    
            for(int j=i+1;j<points.length;j++){
    
    
                int temp = 0;
                long x1 = points[i][0],y1 = points[i][1];
                long x2 = points[j][0],y2 = points[j][1];
                if(x1==x2&&y1==y2){
    
    //如果重复则(x2,y2)取和(x1,y1)不同的任意一点
                    x2++;
                    y2++;
                }
                for(int k=0;k<points.length;k++){
    
    //遍历所有点,统计在直线上的点
                    long x = points[k][0];
                    long y = points[k][1];
                    if(((y-y1)*(x2-x1)==(x-x1)*(y2-y1))){
    
    
                        temp++;
                    }
                }
                maxp = Math.max(maxp,temp);
            }
        }
        return maxp;
    }
}

猜你喜欢

转载自blog.csdn.net/qq_45019698/article/details/108269030