题目描述
思路分析
暴力枚举
枚举点
p
p
p,然后枚举点
q
q
q(两点确定一条直线)求斜率,对每个
p
p
p,开哈希表记录斜率相同的点的个数,注意特判没斜率和重合的情形。
代码实现
class Solution {
public:
int maxPoints(vector<vector<int>>& points) {
int res=0;
for(auto p:points){ //中心的
int ss=0,vs=0;
unordered_map<long double,int> hash;
for(auto& q:points){
if(p==q) ss++;
else if(p[0]==q[0]) vs++;
else{
long double k=(long double)(q[1]-p[1])/(q[0]-p[0]);
hash[k]++;
}
}
int c=vs;
for(auto [k,t]:hash) c=max(c,t);
res=max(res,c+ss);
}
return res;
}
};