这个题,判断一个单链表是否存在闭环。不允许开辟额外的空间。
开始确实不知道怎么解,就去看别人的解法了。
大意是,两个指针,一个前进一步,另一个前进两步,如果到了NULL这两个指针还没出现相等的情况,欧克没有闭环,如果出现相等,就有闭环。
附上代码。个人觉得对指针和链表的操作我真心烂
class Solution { public: bool hasCycle(ListNode *head) { // IMPORTANT: Please reset any member data you declared, as // the same Solution instance will be reused for each test case. ListNode * step1 = head; ListNode * step2 = head; while(true) { if(step1 == NULL) { return false; }</p> <pre><code> step1 = step1-&gt;next; if(step2 == NULL || step2-&gt;next == NULL) { return false; } step2 = step2-&gt;next-&gt;next; if(step1 == step2) { return true; } } } </code></pre> <p>};