演算法141. 環形連結串列
1. 題目描述
給定一個連結串列,判斷連結串列中是否有環。
為了表示給定連結串列中的環,我們使用整數 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
2. 解題思路
/*
解題思路:
解法一、雙指標法
1、設定一個快指標fast:一次走兩步
2、設定一個慢指標slow:一次走一步
3、如果存在環連結串列,則fast和slow會重合
4、否則不存在環連結串列
*/
3. 測試結果
解法一、雙指標法
4. C版
/*
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;
}
6. 複雜度分析
解法一、雙指標法
時間複雜度:O(n)
空間複雜度:O(1)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31442014/viewspace-2694288/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【圖解連結串列類面試題】環形連結串列圖解面試題
- 資料結構與演算法——連結串列 Linked List(單連結串列、雙向連結串列、單向環形連結串列-Josephu 問題)資料結構演算法
- 環形連結串列_相交連結串列_多數元素(java語言)Java
- java環形連結串列約瑟夫環問題筆記Java筆記
- Python實現環形連結串列詳解Python
- [演算法]向有序的環形單連結串列中插入新節點演算法
- 【演算法詳解】有環連結串列演算法
- LeetCode-142-環形連結串列 IILeetCode
- Leetcode-142. 環形連結串列 IILeetCode
- 每日leetcode——142. 環形連結串列 IILeetCode
- 環形連結串列I、II(含程式碼以及證明)
- 演算法題:反轉一個單連結串列&判斷連結串列是否有環演算法
- 演算法-連結串列演算法
- 連結串列面試題(十一)---求帶環單連結串列 環的入口點面試題
- 連結串列面試題(十)---求帶環單連結串列的環的長度面試題
- 漫畫演算法:如何判斷連結串列有環?演算法
- 力扣學習筆記:142. 環形連結串列 II力扣筆記
- 把玩演算法 | 連結串列演算法
- 連結串列面試題(九)---判斷一個連結串列是否帶環面試題
- 約瑟夫環 佇列+連結串列佇列
- 結構與演算法(03):單向連結串列和雙向連結串列演算法
- 程式碼隨想錄演算法訓練營第四天 | 連結串列 24.兩兩交換連結串列中的節點 19.刪除連結串列的倒數第N個節點 142.環形連結串列II演算法
- 演算法面試(一) 連結串列演算法面試
- 初級演算法-連結串列演算法
- 力扣--連結串列演算法力扣演算法
- 筆記--連結串列演算法筆記演算法
- 演算法基礎~連結串列~排序連結串列的合併(k條)演算法排序
- 連結串列面試題(二)---連結串列逆序(連結串列反轉)面試題
- 【小白學演算法】5.連結串列(linked list)、連結串列的新增演算法
- 連結串列面試題(十三)---求兩個都不帶環的連結串列相交的結點面試題
- 連結串列找環(python實現)Python
- 連結串列面試題(八)---約瑟夫環面試題
- 演算法題中的連結串列演算法
- 演算法 - 連結串列操作思想 && case演算法
- 連結串列4: 迴圈連結串列
- 資料結構與演算法-連結串列資料結構演算法
- 04天【程式碼隨想錄演算法訓練營34期】 第二章 連結串列part02 (● 24. 兩兩交換連結串列中的節點 ● 19.刪除連結串列的倒數第N個節點 ● 面試題 02.07. 連結串列相交 ● 142.環形連結串列II )演算法面試題
- 連結串列面試題(十二)---判斷兩個都不帶環的連結串列是否相交面試題