[問題] LeetCode的題目

看板java作者 (凜大小姐~最高!!)時間7年前 (2017/11/26 20:57), 編輯推噓2(209)
留言11則, 6人參與, 7年前最新討論串1/1
大家好,小弟是個初學者。 最近在 LeetCode練習JAVA 今天寫到一題感覺應該沒問題的,但卻過不了。 想請問有什麼問題 題目是LeetCode的第141題 網址 https://leetcode.com/problems/linked-list-cycle/description/ 這題是要檢查Linked List是不是個循環List 我寫的CODE是這樣的: public static boolean hasCycle(ListNode head) { if (head == null || head.next == null) return false; boolean ans = false; ListNode next = head.next; while (next != null) { if (next == head) return true; else next = next.next; } return ans; } 想法是直接比對物件的位址, 如果是循環的,會接回第一個點。 我自己在電腦上測是沒問題。 可是LeetCode給我 Time Limit Exceeded 判定 Last executed input: [3,2,0,-4] tail connects to node index 1 這CASE我自己跑好像不到1ms 不知道為什麼會是TLE 不知道有沒有大大可以幫我看一下? 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.167.195.5 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1511701051.A.617.html

11/26 21:27, 7年前 , 1F
他是跟你說 因為-4其實連結到第一個節點2了
11/26 21:27, 1F

11/26 21:30, 7年前 , 2F
依照你的程式碼while那段會無窮迴圈,因為-4會接回2
11/26 21:30, 2F

11/26 22:49, 7年前 , 3F
喔喔 原來是跳過第一個的循環,我一直以為index1是第一個.
11/26 22:49, 3F

11/29 19:27, 7年前 , 4F
不過你誤會cycle的意思了,不一定是接回頭,可以接身體
11/29 19:27, 4F

11/30 06:16, 7年前 , 5F
我猜用一個類似 bubble sort 的迴圈,檢查是否有任兩個節
11/30 06:16, 5F

11/30 06:17, 7年前 , 6F
點的 next 是相等的就好了,空間代價 0,時間成本 n^2
11/30 06:17, 6F

11/30 09:15, 7年前 , 7F
這題不是用兩個指標slow跟fast比較就好了嗎? 線性時間
11/30 09:15, 7F

11/30 10:58, 7年前 , 8F
龜兔賽跑演算法
11/30 10:58, 8F

11/30 15:38, 7年前 , 9F
感謝大家,後來的確是用兩個指標讓他跑。
11/30 15:38, 9F

11/30 15:39, 7年前 , 10F
一開始以為cycle都會接回頭,所以想說用一個跑就好
11/30 15:39, 10F

12/01 01:56, 7年前 , 11F
btw 這題沒做過真的很難想到不用空間的線性解...
12/01 01:56, 11F
文章代碼(AID): #1Q6hexON (java)
文章代碼(AID): #1Q6hexON (java)