鍊錶帶環或不帶環的幾個經典問題

2021-10-08 01:23:47 字數 1342 閱讀 1771

1.給定乙個鍊錶,返回鍊錶開始入環的第乙個節點。 如果鍊錶無環,則返回 null。

}}2.求不帶環相交鍊錶起始節點

public

class

solution

return h1;

}}

3.求帶環單鏈表的環的長度快慢指標從第一次相遇開始進行累加直到第二次相遇跳出迴圈

public

static

intlengthcircle

(listnode head)

if(sum==0)

break;if

(flag)

}return count;

}

4.判斷兩個鍊錶(可能帶環)是否相交

分析:兩個都不帶環:可能會相交

其中乙個帶環:不可能相交

兩個都帶環:可能相交,兩種情況(環外相交,環內相交)

public

boolean

islistcrosswithcircle

(listnode list1, listnode list2)

listnode node1 = null, node2 = null;

//先各自判斷兩個鍊錶是否帶環(帶環返回相遇點,否則返回空)

node1 =

detectcircle

(list1)

; node2 =

detectcircle

(list2)

;//兩個鍊錶都不帶環

if(node1==null && node2==null)

while

(tail1.next)

while

(ptail2.next)

if(ptail1 == ptail2)

}//兩個鍊錶均帶環

else

if(node1 && node2)

cur = cur.next;}}

return

false

;}

鍊錶帶環問題

1 判斷鍊錶是否帶環 基本思路 定義兩個指標,乙個快指標,乙個慢指標,快指標一次走兩步,慢指標一次走一步,當兩個指標重合的時候,說明該鍊錶是帶環的,當快指標為空或者快指標的下乙個節點為空,說明是不帶環的。實現 definition of listnode class listnode class s...

鍊錶帶環和相交的問題

判斷兩個鍊錶是否相交?不帶環 1 第一種方法 我們只需要遍歷每條鍊錶,把最後乙個節點儲存起來,然後判斷這兩條鍊錶的最後乙個節點是否相等,如果是一樣的節點,那麼這兩個節點就一定相交。2 第二種方法 遍歷兩條鍊錶,求出鍊錶l1的鍊錶長度為len1,鍊錶l2的鍊錶長度為len2,長度差為 len1 len...

有關單鏈表帶環的問題

1.檢查鍊錶是否帶環,若帶求長度,環入口點。設定兩個快慢指標開始時指向起始位置,開始出發,如果這兩個指標相交,那麼存在環 從交點出發,當再次回到此點便可統計環長度 對與於環入口點,假設快指標每次走兩個位置,慢一直走乙個,如圖所示 則只需乙個從起始點,乙個從交點移動,必會相交。2.檢查兩煉表否相交 鍊...