本文最后更新于179 天前,其中的信息可能已经过时,如有错误请发送邮件到2446865563@qq.com
1.题目基本信息
1.1.题目描述
给定2D空间中四个点的坐标 p1, p2, p3 和 p4,如果这四个点构成一个正方形,则返回 true 。
点的坐标 pi 表示为 [xi, yi] 。 输入没有任何顺序 。
一个 有效的正方形 有四条等边和四个等角(90度角)。
1.2.题目地址
https://leetcode.cn/problems/valid-square/description/
2.解题方法
2.1.解题思路
验证任意三个点组合是否为等腰直角三角形,且最短边不为0且相等
3.解题代码
python代码
class Solution:
def validSquare(self, p1: List[int], p2: List[int], p3: List[int], p4: List[int]) -> bool:
# 思路:验证任意三个点组合是否为等腰直角三角形,且最短边不为0且相等
edge = -1 # 维护正方形边长
def check(a, b, c):
nonlocal edge
l1 = (a[0] - b[0]) * (a[0] - b[0]) + (a[1] - b[1]) * (a[1] - b[1])
l2 = (a[0] - c[0]) * (a[0] - c[0]) + (a[1] - c[1]) * (a[1] - c[1])
l3 = (c[0] - b[0]) * (c[0] - b[0]) + (c[1] - b[1]) * (c[1] - b[1])
if min(l1, l2) == 0:
return False
if (l1 == l2 and l1 + l2 == l3) or (l1 == l3 and l1 + l3 == l2) or (l2 == l3 and l2 + l3 == l1):
if edge == -1 or edge == min(a, b):
return True
return False
return False
return check(p1, p2, p3) and check(p1, p2, p4) and check(p1, p3, p4) and check(p2, p3, p4)
4.执行结果










