您好,登錄后才能下訂單哦!
給定一個鏈表,判斷鏈表中是否有環。
為了表示給定鏈表中的環,我們使用整數 pos 來表示鏈表尾連接到鏈表中的位置(索引從 0 開始)。 如果 pos 是 -1,則在該鏈表中沒有環。
示例 1:
輸入:head = [3,2,0,-4], pos = 1
輸出:true
解釋:鏈表中有一個環,其尾部連接到第二個節點。
示例 2:
輸入:head = [1,2], pos = 0
輸出:true
解釋:鏈表中有一個環,其尾部連接到第一個節點。
示例 3:
輸入:head = [1], pos = -1
輸出:false
解釋:鏈表中沒有環。
進階:
你能用 O(1)(即,常量)內存解決此問題嗎?
來源:力扣(LeetCode)
鏈接:
https://leetcode-cn.com/problems/linked-list-cycle
/*
解題思路:
解法一、雙指針法
1、設置一個快指針fast:一次走兩步
2、設置一個慢指針slow:一次走一步
3、如果存在環鏈表,則fast和slow會重合
4、否則不存在環鏈表
*/
解法一、雙指針法
/*
title: 算法141. 環形鏈表
author: xidoublestar
method: 雙指針法
type: C
date: 2020-5-25
*/
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
bool hasCycle(struct ListNode* head) {
if (head == NULL)
return false;
struct ListNode* fast = head->next, * slow = head;
while (fast && fast->next) {
fast = fast->next->next;
slow = slow->next;
if (fast == slow)
return true;
}
return false;
}
解法一、雙指針法
時間復雜度:O(n)
空間復雜度:O(1)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。