day68(1.27)——leetcode面试经典150

149. 直线上最多的点数

149. 直线上最多的点数

题目:

题解:

java 复制代码
class Solution {
    public int maxPoints(int[][] points) {
        if(points.length <= 2) {
            return points.length;
        }
        int n=points.length;
        int max_sum = 0;
        for(int i=0;i<points.length;i++) {
            for(int j=i+1;j<points.length;j++) {
                int count = 2;
                int x1 = points[i][0];
                int y1 = points[i][1];
                int x2 = points[j][0];
                int y2 = points[j][1];
                if (x1 == x2) {
                // 垂直线
                    for (int k = 0; k < n; k++) {
                        if (k != i && k != j && points[k][0] == x1) {
                            count++;
                        }
                    }
                } else if (y1 == y2) {
                    // 水平线
                    for (int k = 0; k < n; k++) {
                        if (k != i && k != j && points[k][1] == y1) {
                            count++;
                        }
                    }
                } else {
                    // 斜线
                    double k_val = 1.0 * (y2 - y1) / (x2 - x1);
                    double b_val = y1 - k_val * x1;
                    for (int k = 0; k < n; k++) {
                        if (k != i && k != j) {
                            double y_pred = k_val * points[k][0] + b_val;
                            if (Math.abs(y_pred - points[k][1]) < 1e-6) {
                                count++;
                            }
                        }
                    }
                }
                max_sum = Math.max(max_sum, count);
            }
        }
        return max_sum;
    }
}
相关推荐
郝学胜-神的一滴20 分钟前
力扣 692:巧用小顶堆高效求解前K个高频单词
java·数据结构·python·程序人生·算法·leetcode·职场和发展
ychqsq26 分钟前
103.样书
经验分享·职场和发展
SamDeepThinking1 小时前
如何维持缓存的一致性?
后端·面试·程序员
程序员-Benothing2 小时前
Java集合:List实现类深度对比
java·开发语言·后端·面试·list
HeiSenBerg17 小时前
Android 网络协议全解析:从 TCP 三次握手到 HTTPS 加密,一篇就够了
面试
Hi李耶18 小时前
【LeetCode】4-寻找两个正序数组的中位数
算法·leetcode·职场和发展
我命由我1234519 小时前
棘轮效应极简理解
经验分享·学习·职场和发展·产品运营·求职招聘·职场发展·学习方法
天才测试猿19 小时前
实例介绍:Unittest框架及自动化测试实现流程
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
乐思智能科技有限公司20 小时前
PLECS软件学习使用(二)直流电机基本系统模型
人工智能·算法·机器学习·面试·职场和发展
GitLqr21 小时前
深度拆解 Dart 事件循环:从面试题看清 Microtask 与 Event Queue 的执行顺序
flutter·面试·dart