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

来源:互联网 发布:java 打印异常堆栈 编辑:程序博客网 时间:2024/06/06 12:55

本题源自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]);    }


阅读全文
0 0
原创粉丝点击