织梦怎么关闭网站,湖南铁军工程建设有限公司官方网站,电脑网站怎么制作,网站排名权重怎么做1. 题目
给定二维空间中四点的坐标#xff0c;返回四点是否可以构造一个正方形。
一个点的坐标#xff08;x#xff0c;y#xff09;由一个有两个整数的整数数组表示。
示例:
输入: p1 [0,0], p2 [1,1], p3 [1,0], p4 [0,1]
输出: True注意:
所有输入整数都在 [-100…1. 题目
给定二维空间中四点的坐标返回四点是否可以构造一个正方形。
一个点的坐标xy由一个有两个整数的整数数组表示。
示例:
输入: p1 [0,0], p2 [1,1], p3 [1,0], p4 [0,1]
输出: True注意:
所有输入整数都在 [-1000010000] 范围内。
一个有效的正方形有四个等长的正长和四个等角90度角。
输入点没有顺序。来源力扣LeetCode 链接https://leetcode-cn.com/problems/valid-square 著作权归领扣网络所有。商业转载请联系官方授权非商业转载请注明出处。 2. 解题
4个点可以组成6条边最长的两条是对角线排序后前4条边相等后2条边对角线相等
class Solution { //C
public:bool validSquare(vectorint p1, vectorint p2, vectorint p3, vectorint p4) {setvectorint s;vectorvectorint p {p1,p2,p3,p4};vectorint d;for(auto pi : p)s.insert(pi);if(s.size() 4) return false;//有重合点for(int i 0, j; i 3; i)for(j i1; j 4; j)d.push_back(dis(p[i][0],p[i][1],p[j][0],p[j][1]));sort(d.begin(), d.end());return (d[0]d[1]) (d[1]d[2]) (d[2]d[3]) (d[4]d[5]);}int dis(int x1, int y1, int x2, int y2){return (x1-x2)*(x1-x2)(y1-y2)*(y1-y2);}
};0 ms 26.6 MB
class Solution:# py3def validSquare(self, p1: List[int], p2: List[int], p3: List[int], p4: List[int]) - bool:p [p1,p2,p3,p4]d []s set(tuple(pi) for pi in p)if len(s) 4:return Falsedef dis(a,b,c,d):return (a-c)**2(b-d)**2for i in range(3):for j in range(i1, 4):d.append(dis(p[i][0],p[i][1],p[j][0],p[j][1]))d sorted(d)return d[0]d[1] and d[1]d[2] and d[2]d[3] and d[4]d[5]48 ms 13.8 MB