leetcode 149 —— Max Points on a Line
2015-08-17 16:34
405 查看
Given n points
on a 2D plane, find the maximum number of points that lie on the same straight line.
思路:因为一个float的类型转化折腾了好久
<pre name="code" class="cpp">float k = (float)(points[i].y - points[j].y) / (points[i].x - points[j].x); //对
class Solution {
public:
int maxPoints(vector<Point>& points) {
if (points.size() <= 2) return points.size();
unordered_map<float, int> myHash;
int maxNums = INT_MIN;
for (int i = 0; i < points.size(); i++){
myHash.clear();
myHash[(float)INT_MAX] = 0;
int samePoints = 1;
for (int j = 0; j < points.size(); j++){
if (i == j) continue; //同一个点
if (points[i].x == points[j].x&&points[i].y == points[j].y){ //相同的点
samePoints++;
continue;
}
if (points[i].x == points[j].x){ //与y轴平行
myHash[INT_MAX]++;
}
else{
float k = (float)(points[i].y - points[j].y) / (points[i].x - points[j].x);//此处的类型转化,后面表达式一定不能带括号
myHash[k]++;
}
}
for (auto j = myHash.begin(); j != myHash.end(); ++j){
int tmp = j->second + samePoints;
maxNums = maxNums > tmp ? maxNums : tmp;
}
}
return maxNums;
}
}a;
on a 2D plane, find the maximum number of points that lie on the same straight line.
思路:因为一个float的类型转化折腾了好久
<pre name="code" class="cpp">float k = (float)(points[i].y - points[j].y) / (points[i].x - points[j].x); //对
<pre name="code" class="cpp">float k = float(points[i].y - points[j].y) / (points[i].x - points[j].x); //对
float k = float((points[i].y - points[j].y) / (points[i].x - points[j].x)); //错
<pre name="code" class="cpp">float k = (float)((points[i].y - points[j].y) / (points[i].x - points[j].x));//错
class Solution {
public:
int maxPoints(vector<Point>& points) {
if (points.size() <= 2) return points.size();
unordered_map<float, int> myHash;
int maxNums = INT_MIN;
for (int i = 0; i < points.size(); i++){
myHash.clear();
myHash[(float)INT_MAX] = 0;
int samePoints = 1;
for (int j = 0; j < points.size(); j++){
if (i == j) continue; //同一个点
if (points[i].x == points[j].x&&points[i].y == points[j].y){ //相同的点
samePoints++;
continue;
}
if (points[i].x == points[j].x){ //与y轴平行
myHash[INT_MAX]++;
}
else{
float k = (float)(points[i].y - points[j].y) / (points[i].x - points[j].x);//此处的类型转化,后面表达式一定不能带括号
myHash[k]++;
}
}
for (auto j = myHash.begin(); j != myHash.end(); ++j){
int tmp = j->second + samePoints;
maxNums = maxNums > tmp ? maxNums : tmp;
}
}
return maxNums;
}
}a;
相关文章推荐
- DataGridView特殊按钮(DisableButtonColumn)
- ATS程序功能和使用方法详解
- trie树
- 数据表设置外键
- pagefile.sys怎么删除
- DialogFragment的相关使用
- hdu 3973 AC's String(字符串hash+线段树单点修改)
- static 关键字详解
- notepad++使用正则表达式的查找替换
- Docker 1.8:可信镜像、Toolbox、Registry及编排工具更新
- Mysql数据库事务详解
- Html的内联框架iframe
- 03-关键字、标识符、注释
- Codeforces Round #Pi (Div. 2)
- hdu 5057 块状链表
- BZOJ 1059 [ZJOI2007]矩阵游戏
- poj 3264 Balanced Lineup(一维RMQ)
- 教你如何在iOS项目中设置各种字体
- 根域名服务器 根服务器一般指根域名服务器 (DNS)
- 线程池中捕获线程执行异常