您好,登錄后才能下訂單哦!
141. Linked List Cycle
Given a linked list, determine if it has a cycle in it.
Follow up:
Can you solve it without using extra space?
題目大意:
判斷一個(gè)單鏈表是否存在環(huán)。
思路:
采用快慢指針來(lái)處理。
代碼如下:
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: bool hasCycle(ListNode *head) { ListNode *slow,*fast; if(NULL == head || NULL == head->next) return false; slow = head; fast = head; fast = fast->next->next; slow = slow->next; while(1) { if(fast == NULL || fast->next == NULL) return false; if(fast == slow || fast->next == slow) return true; slow = slow->next; fast = fast->next->next; } return false; } };
總結(jié):快慢指針
快慢指針中的快慢指的是移動(dòng)的步長(zhǎng),即每次向前移動(dòng)速度的快慢。例如可以讓快指針每次沿鏈表向前移動(dòng)2,慢指針每次向前移動(dòng)1次。
快慢指針可以用來(lái)求一個(gè)單鏈表是否存在環(huán),還可以用來(lái)求一個(gè)單鏈表的中間位置。
2016-08-13 00:34:46
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。