作者p31819 (凛大小姐~最高!!)
看板java
标题[问题] LeetCode的题目
时间Sun Nov 26 20:57:26 2017
大家好,小弟是个初学者。
最近在 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://webptt.com/cn.aspx?n=bbs/java/M.1511701051.A.617.html
1F:推 pipi99: 他是跟你说 因为-4其实连结到第一个节点2了 11/26 21:27
2F:→ pipi99: 依照你的程式码while那段会无穷回圈,因为-4会接回2 11/26 21:30
3F:→ p31819: 喔喔 原来是跳过第一个的循环,我一直以为index1是第一个. 11/26 22:49
4F:→ cha122977: 不过你误会cycle的意思了,不一定是接回头,可以接身体 11/29 19:27
5F:→ fayhong: 我猜用一个类似 bubble sort 的回圈,检查是否有任两个节 11/30 06:16
6F:→ fayhong: 点的 next 是相等的就好了,空间代价 0,时间成本 n^2 11/30 06:17
7F:→ wawi2: 这题不是用两个指标slow跟fast比较就好了吗? 线性时间 11/30 09:15
8F:推 s06i06: 龟兔赛跑演算法 11/30 10:58
9F:→ p31819: 感谢大家,後来的确是用两个指标让他跑。 11/30 15:38
10F:→ p31819: 一开始以为cycle都会接回头,所以想说用一个跑就好 11/30 15:39
11F:→ cha122977: btw 这题没做过真的很难想到不用空间的线性解... 12/01 01:56