593. 有效的正方形

发布时间 2023-07-01 20:21:44作者: 乐乐章

难度中等

给定2D空间中四个点的坐标 p1p2p3 和 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)