import math
class Solution(object):
def validSquare(self, p1, p2, p3, p4):
#计算两点之间距离的函数
def dist(p1, p2):
return math.sqrt((p1[0] - p2[0]) ** 2 + (p1[1] - p2[1]) ** 2)
#点坐标列表
res = [p1, p2, p3, p4]
#点距字典,用以统计点距种类以及个数
dict1 = {}
for i in range(3):
for j in range(i + 1, 4):
a = dist(res[i], res[j])
if dict1.get(a) == None:
#当点距种类超过两种,直接返回false
if len(dict1) >= 2:
return False
dict1[a] = 1
else:
dict1[a] += 1
#side表示变成,another表示对角线长度
side = 0
another = 0
for i, j in dict1.items():
#点距个数为4的则是边长
if j == 4:
side = i
#点距个数为2的是对角线长
elif j == 2:
another = i
#判断边长平方的两倍是否等于对角线长的平方
if side != 0 and another != 0:
#0.0000001是误差范围
return another ** 2 - (side ** 2) * 2 <= 0.0000001
return False
算法分析与设计第十五周:593. Valid Square
最新推荐文章于 2024-03-08 20:26:53 发布