LeetCode---3.Max Points on a Line
2014-09-05 09:04
351 查看
题目链接:https://oj.leetcode.com/problems/max-points-on-a-line/
解题思路:
任取一点,求该点与其他所有点的斜率,拥有相同斜率的点处于同一直线上,计算这些点的数量。遍历所有的点,排序得出最大的点数。
代码:
解题思路:
任取一点,求该点与其他所有点的斜率,拥有相同斜率的点处于同一直线上,计算这些点的数量。遍历所有的点,排序得出最大的点数。
代码:
#ifndef MAXPOINTONLINE_H_ #define MAXPOINTONLINE_H_ #include "header.h" #pragma once const double INF = 210000000; struct Point { int x; int y; Point() : x(0), y(0) {} Point(int a, int b) : x(a), y(b) {} }; class MaxPointOnLine { public: int maxPoints(vector<Point> &points) { max_num = 1; int same_point = 0; vector<Point>::iterator iteri; vector<Point>::iterator iterj; if (points.size() <= 2) { return points.size(); } for (iteri = points.begin(); iteri != points.end(); iteri ++) { Point p = *iteri; k.clear(); same_point = 0; for (iterj = iteri + 1; iterj != points.end(); iterj ++) { if (iteri->x == iterj->x) { if (iteri->y == iterj->y) { same_point++; } else { k.push_back(INF); } } else { k.push_back(double(iteri->y - iterj->y) / (iteri->x - iterj->x)); } } int count = 1; if (k.size() == 0) { count += same_point; max_num = (max_num < count) ? count : max_num; } else if (k.size() == 1) { count += (same_point+1); max_num = (max_num < count) ? count : max_num; } else if( k.size() > 1){ std::sort(k.begin(), k.end(), compare); vector<double>::iterator iter; for ( iter = k.begin(); iter < k.end()-1; iter++) { if (*iter == *(iter + 1)) { count++; } else { count += (same_point + 1); max_num = (max_num < count) ? count : max_num; count = 1; } } if (count > 1) { count += (same_point + 1); max_num = (max_num < count) ? count : max_num; } } } return max_num; } private: static bool compare(const double& c1, const double& c2) { return c1 < c2; } vector<double> k; int max_num; }; #endif
相关文章推荐
- LeetCode: Max Points on a Line
- LeetCode__Max Points on a Line
- LeetCode:Max Points on a Line
- Leetcode Max Points on a Line
- Leetcode: max-points-on-a-line
- 【leetcode】Max Points on a Line
- [Leetcode][python]Max Points on a Line
- LeetCode problem 3: Max Points on a Line
- LeetCode刷题笔记(穷举):max-points-on-a-line
- LeetCode Max Points on a Line
- [LeetCode] Max Points on a Line, Solution
- Max Points on a Line | leetcode
- **Leetcode 149. Max Points on a Line
- Max Points on a Line--LeetCode
- leetcode题目解答--Max Points on a Line
- LeetCode--Max Points on a Line
- LeetCode Max Points on a Line
- LeetCode Max Points on a Line
- LeetCode Max Points on a Line 解题报告
- LeetCode-Max Points on a Line[AC源码]