在這次練習 時,我深入了解了如何透過快慢指針來判斷一個單向鏈結串列是否存在環。在實作與提交過程中,我遇到了一個讓我印象深刻的錯誤。
一開始,我參考一般 Java 寫法,自己定義了 ListNode
類別,並撰寫了 main()
方法來手動測試我的 hasCycle()
函式。程式在本地 IDE 上運行沒有問題,但當我將完整程式碼提交到 LeetCode 平台時,卻出現了 java.lang.NoSuchMethodError: 'ListNode ListNode.deserialize(java.lang.String)'
的錯誤。這個錯誤訊息讓我一開始感到困惑,因為我並沒有呼叫 deserialize()
方法。
經過查找資料與分析錯誤訊息,我才理解到這是因為 LeetCode 平台本身已經提供了 ListNode
類別與測試資料的建構方式,而我自定義的 ListNode
類別覆蓋了系統內建的版本,導致平台在轉換輸入資料時找不到 deserialize()
方法。因此,我學到了一個很重要的教訓:在使用線上測評平台時,應該遵照平台提供的程式結構,只實作指定的方法,避免定義不必要的類別與函式。
這次經驗不僅讓我熟悉了 Floyd 判圈演算法的實作邏輯,也讓我更加理解了線上平台的運作方式與潛在的陷阱。