593. 有效的正方形(勾股定理)
难度中等
给定2D空间中四个点的坐标 p1
, p2
, p3
和 p4
,如果这四个点构成一个正方形,则返回 true
。
点的坐标 pi
表示为 [xi, yi]
。 输入没有任何顺序
。
一个 有效的正方形 有四条等边和四个等角(90度角)。
示例 1:
输入: p1 = [0,0], p2 = [1,1], p3 = [1,0], p4 = [0,1] 输出: True
示例 2:
输入:p1 = [0,0], p2 = [1,1], p3 = [1,0], p4 = [0,12] 输出:false
示例 3:
输入:p1 = [1,0], p2 = [-1,0], p3 = [0,1], p4 = [0,-1] 输出:true
class Solution: def validSquare(self, p1: List[int], p2: List[int], p3: List[int], p4: List[int]) -> bool: def dist(p1,p2): return (p1[0] - p2[0])**2 + (p1[1]-p2[1])**2 def check3p(p1,p2,p3): l1 = dist(p1,p2) l2 = dist(p2,p3) l3 = dist(p1,p3) long_l = max(l1,l2,l3) short_l = min(l1,l2,l3) return short_l+short_l == long_l and short_l !=0 return check3p(p2,p3,p4) and check3p(p1,p3,p4) and check3p(p1,p2,p4) and check3p(p1,p2,p3)