LeetCode 初級演算法 環形鍊錶

2021-09-17 23:34:35 字數 1407 閱讀 1464

給定乙個鍊錶,判斷鍊錶中是否有環。

為了表示給定鍊錶中的環,我們使用整數 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)(即,常量)記憶體解決此問題嗎?

判斷是否有環,可以採用乙個快指標和乙個慢指標,開啟的時候在同乙個起點,鍊錶中存在環則必定有乙個時刻快指標會等於慢指標。

這就好比2個人在環形操場上跑步,起點相同,乙個跑的快,乙個跑的慢,跑的快的遲早會追上跑的慢的。

bool

hascycle

(listnode *head)

}return

false

;}

方法:

當快指標與慢指標第一次相遇的時候,開始計數,每次加一,第二次相遇的時候,則返回計數值,即為有環鏈表的長度。

public

intlooplength

(listnode head)

if(flag )

if(flag && time==2)

}return0;

}

方法:

在環中,快指標與慢指標第一次相遇的點,到環的起始點的距離和頭結點到環的起始點的距離是一樣的。

public listnode findloopbegin

(listnode head)

return slow;}}

return null;

//無環

}

初級演算法 鍊錶 環形鍊錶

給定乙個鍊錶,判斷鍊錶中是否有環。為了表示給定鍊錶中的環,我們使用整數 pos 來表示鍊錶尾連線到鍊錶中的位置 索引從 0 開始 如果 pos 是 1,則在該鍊錶中沒有環。示例 1 輸入 head 3,2,0,4 pos 1 輸出 true 解釋 鍊錶中有乙個環,其尾部連線到第二個節點。示例 2 輸...

Leetcode 初級演算法 鍊錶6 環形鍊錶

給定乙個鍊錶,判斷鍊錶中是否有環。為了表示給定鍊錶中的環,我們使用整數 pos 來表示鍊錶尾連線到鍊錶中的位置 索引從 0 開始 如果 pos 是 1,則在該鍊錶中沒有環。示例 1 輸入 head 3,2,0,4 pos 1 輸出 true 解釋 鍊錶中有乙個環,其尾部連線到第二個節點。示例 2 輸...

leetcode初級演算法 鍊錶

題目源自leetcode,方法都是自 cai 己 ji 寫的,可能比較符合菜雞們的思路 鍊錶是做到現在,感覺自己最拉垮的一節,資料結構真的都還給老師了 請編寫乙個函式,使其可以刪除某個鍊錶中給定的 非末尾 節點。傳入函式的唯一引數為 要被刪除的節點 示例 1 輸入 head 4,5,1,9 node...