iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 25
0
自我挑戰組

Leetcode新手挑戰30天系列 第 25

#593 Valid Square - 研究其他解法

前情提要

昨天寫完程式碼後測試跳出語法錯誤!太可怕了!今天要來把這個問題解決.

進入正題

試了很久,一直把問題的程式碼註解掉測試,但還是找不出問題在哪...
決定先研究看看別人的作法:

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的結果附上:
https://ithelp.ithome.com.tw/upload/images/20190927/20113393KDpWpT5vQL.png

參考資料

參考1【LeetCode】593. Valid Square 解题报告(Python)
參考2Python set() 函数


上一篇
#593 Valid Square
下一篇
#1108 Defanging an IP Address
系列文
Leetcode新手挑戰30天31

尚未有邦友留言

立即登入留言