C++ | Leetcode C++题解之第149题直线上最多的点数

题目:

题解:

class Solution {
public:
    int gcd(int a, int b) {
        return b ? gcd(b, a % b) : a;
    }

    int maxPoints(vector<vector<int>>& points) {
        int n = points.size();
        if (n <= 2) {
            return n;
        }
        int ret = 0;
        for (int i = 0; i < n; i++) {
            if (ret >= n - i || ret > n / 2) {
                break;
            }
            unordered_map<int, int> mp;
            for (int j = i + 1; j < n; j++) {
                int x = points[i][0] - points[j][0];
                int y = points[i][1] - points[j][1];
                if (x == 0) {
                    y = 1;
                } else if (y == 0) {
                    x = 1;
                } else {
                    if (y < 0) {
                        x = -x;
                        y = -y;
                    }
                    int gcdXY = gcd(abs(x), abs(y));
                    x /= gcdXY, y /= gcdXY;
                }
                mp[y + x * 20001]++;
            }
            int maxn = 0;
            for (auto& [_, num] : mp) {
                maxn = max(maxn, num + 1);
            }
            ret = max(ret, maxn);
        }
        return ret;
    }
};

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-06-14 07:44:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-14 07:44:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-14 07:44:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-14 07:44:03       18 阅读

热门阅读

  1. 深入理解服务器路由功能:配置与应用详解

    2024-06-14 07:44:03       5 阅读
  2. TCP是什么、UDP是什么,它们有什么区别

    2024-06-14 07:44:03       6 阅读
  3. WHAT - React 学习系列(一)

    2024-06-14 07:44:03       9 阅读
  4. .NET C# 实现国密算法加解密

    2024-06-14 07:44:03       3 阅读
  5. VB.net与C# 调用InitializeComponent的区别

    2024-06-14 07:44:03       6 阅读
  6. HarmonyOS(35) @State使用注意事项

    2024-06-14 07:44:03       5 阅读
  7. php学习笔记

    2024-06-14 07:44:03       6 阅读
  8. Android基础-应用的启动流程

    2024-06-14 07:44:03       6 阅读