0.DFS构造树
1.构造1:N(N=子孩子节点)
f.pngLeetCode 在同一条直线上的最多点
执行用时:
224 ms
, 在所有 JavaScript 提交中击败了
12.50%
的用户
内存消耗:
67 MB
, 在所有 JavaScript 提交中击败了
5.77%
的用户
/**
* @param {number[][]} points
* @return {number}
*/
/**
* @param {number[][]} points
* @return {number}
*/
var maxPoints = function(points) {
if(points.length==1){
return 1;
}
//两点确定一条直线
//排序
let set=new Map();
let ans=0;
for(let i=0;i<points.length;i++){
let preKey="y2="+points[i][1]+"->y1="+points[i][0]+"->"
for(let j=0;j<points.length;j++){
if(i==j){
continue;
}
let y1=points[j][1]-points[i][1];
let x1=points[j][0]-points[i][0];
let p2=y1/x1;
if(x1==0){
p2="00";
}
let z=p2
p2=preKey+z
if(set[p2]){
set[p2]+=1
}
else{
set[p2]=2
}
ans=Math.max(set[p2],ans)
}
}
return ans
}
if(points.size()==1){
return 1;
}
//两点确定一条直线
//排序
unordered_map<string,int> map;
int ans=0;
int len=points.size();
for(int i=0;i<len;i++){
string preKey="y2="+to_string(points[i][1])+"->x2="+to_string(points[i][0])+"->";
for(int j=0;j<len;j++){
if(i==j){
continue;
}
double y1=points[j][1]-points[i][1];
double x1=points[j][0]-points[i][0];
double p2=x1==0?0:y1/x1;
string z=to_string(p2);
if(x1==0){
p2=0;
z="02";
}
preKey.push_back('->');
string key=preKey+z;
if(map.count(key)>0){
map[key]+=1;
}
else{
map[key]=2;
}
ans=max(map[key],ans);
}
}
return ans;
网友评论