0141. Linked List Cycle

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?

题目大意 #

判断链表是否有环,不能使用额外的空间。

解题思路 #

给 2 个指针,一个指针是另外一个指针的下一个指针。快指针一次走 2 格,慢指针一次走 1 格。如果存在环,那么前一个指针一定会经过若干圈之后追上慢的指针。

代码 #


package leetcode

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */

func hasCycle(head *ListNode) bool {
	fast := head
	slow := head
	for slow != nil && fast != nil && fast.Next != nil {
		fast = fast.Next.Next
		slow = slow.Next
		if fast == slow {
			return true
		}
	}
	return false
}

```w
----------------------------------------------
<div style="display: flex;justify-content: space-between;align-items: center;">
<p><a href="https://books.halfrost.com/leetcode/ChapterFour/0137.Single-Number-II/">️上一页</a></p>
<p><a href="https://books.halfrost.com/leetcode/ChapterFour/0142.Linked-List-Cycle-II/">下一页</a></p>
</div>
Calendar Sep 6, 2020
Edit Edit this page
本站总访问量:  次 您是本站第  位访问者