昨天寫完程式碼後測試跳出語法錯誤!太可怕了!今天要來把這個問題解決.
試了很久,一直把問題的程式碼註解掉測試,但還是找不出問題在哪...
決定先研究看看別人的作法:
def validSquare(self, p1, p2, p3, p4):
def d(point1, point2):
return (point1[0] - point2[0]) ** 2 + (point1[1] - point2[1]) ** 2
s = set([d(p1, p2), d(p1, p3), d(p1, p4), d(p2, p3), d(p2, p4), d(p3, p4)])
return 0 not in s and len(s) == 2
參考1裡的解法很簡短,
裡面的d函式和我的算法一樣,先算出兩個點之間的長度,
但是他借用了set(),排除了重複的集合(見參考2說明),
所以最後只需要確定,所有點的長度沒有是0的,還有會有2種邊的長度:一個是X;一個是根號2倍的X
最後Submit的結果附上:
參考1【LeetCode】593. Valid Square 解题报告(Python)
參考2Python set() 函数