Leetcode: Linked List Cycle

题目: Given a linked list, determine if it has a cycle in it.

思路分析: 利用快慢指针slow,fast。 slow指针每次走一步,fast指针每次走两步,倘若存在环,则slow和fast必定在某一时刻相遇。

C++参考代码:

/** * 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){if (!head) return false;ListNode *slow = head;ListNode *fast = head->next;while (fast && fast->next){if (slow == fast) return true;slow = slow->next;fast = fast->next->next;}return false;}};

C#参考代码:

/** * Definition for singly-linked list. * public class ListNode { *public int val; *public ListNode next; *public ListNode(int x) { *val = x; *next = null; *} * } */{public bool HasCycle(ListNode head){if (head == null) return false;ListNode slow = head;ListNode fast = head.next;while (fast != null && fast.next != null){if (slow == fast) return true;slow = slow.next;fast = fast.next.next;}return false;}}

,也会有想更换的念头。旅行,正好提供了这样一个机会,

Leetcode: Linked List Cycle

相关文章:

你感兴趣的文章:

标签云: