class Solution(object):
def validSquare(self, p1, p2, p3, p4):
"""
:type p1: List[int]
:type p2: List[int]
:type p3: List[int]
:type p4: List[int]
:rtype: bool
"""
points = [p1, p2, p3, p4]
dists = collections.Counter()
for i in range(len(points)):
for j in range(i+1, len(points)):
dists[self.getDistance(points[i], points[j])] += 1
return len(dists.values())==2 and 4 in dists.values() and 2 in dists.values()
def getDistance(self, p1, p2):
def validSquare(self, p1, p2, p3, p4):
"""
:type p1: List[int]
:type p2: List[int]
:type p3: List[int]
:type p4: List[int]
:rtype: bool
"""
points = [p1, p2, p3, p4]
dists = collections.Counter()
for i in range(len(points)):
for j in range(i+1, len(points)):
dists[self.getDistance(points[i], points[j])] += 1
return len(dists.values())==2 and 4 in dists.values() and 2 in dists.values()
def getDistance(self, p1, p2):
return (p1[0] - p2[0])**2 + (p1[1] - p2[1])**2
https://leetcode.com/problems/valid-square/#/solutions
思路:
计算点之间的距离,因为正方形的距离只有两种可能,边长和对角线,所以记录边长和对角线出现的情况,验证出现次数。