您的位置:首页 > 其它

给定二维空间中四点的坐标,返回四点是否可以构造一个正方形。

2017-12-06 11:04 120 查看
本题源自leetcode  593

------------------------------------------------------------

思路:、用一个有序集合,计算四个点俩俩之间的距离,存入有序集合。如果是正方形,那么有序集合最终只有边和对角线俩个值,且不为0

代码:

bool validSquare(vector<int>& p1, vector<int>& p2, vector<int>& p3, vector<int>& p4) {
unordered_set<int> s;
s.insert(d(p1,p2));
s.insert(d(p1,p3));
s.insert(d(p2,p3));
s.insert(d(p1,p4));
s.insert(d(p2,p4));
s.insert(d(p3,p4));

return !s.count(0) && s.size() == 2;
}
int d(vector<int>& p1,vector<int>& p2){
return (p1[0]-p2[0])*(p1[0] - p2[0]) + (p1[1] - p2[1]) * (p1[1] - p2[1]);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐