141. Linked List Cycle
10多年的錦江網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。成都營銷網(wǎng)站建設(shè)的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整錦江建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)公司從事“錦江網(wǎng)站設(shè)計”,“錦江網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。
Given a linked list, determine if it has a cycle in it.
Follow up:
Can you solve it without using extra space?
題目大意:
判斷一個單鏈表是否存在環(huán)。
思路:
采用快慢指針來處理。
代碼如下:
/** * 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é):快慢指針
快慢指針中的快慢指的是移動的步長,即每次向前移動速度的快慢。例如可以讓快指針每次沿鏈表向前移動2,慢指針每次向前移動1次。
快慢指針可以用來求一個單鏈表是否存在環(huán),還可以用來求一個單鏈表的中間位置。
2016-08-13 00:34:46