题目

max-points-on-a-line


算法

* 直接模拟


代码

* 直接模拟


class Solution {

public:

    int maxPoints(vector<Point>& points) {

        int res = 0;

        unordered_map<float, int> m;

        for (int i = 0; i < points.size(); ++i) {

            m.clear();

            m[INT_MIN] = 0;

            int duplicate = 1;

            for (int j = 0; j < points.size(); ++j) {

                if (j == i) continue;

                if (points[i].x == points[j].x && points[i].y == points[j].y) {

                    ++duplicate;

                    continue;

                }

                float slope = (points[i].x == points[j].x) ? INT_MAX : (float)(points[j].y - points[i].y) / (points[j].x - points[i].x);

                ++m[slope];

            }

            for (unordered_map<float, int>::iterator it = m.begin(); it != m.end(); ++it) {

                res = max(res, it->second + duplicate);

            }

        }

        return res;

    }

};

results matching ""

    No results matching ""