鍊錶快慢指標

2021-07-26 12:17:34 字數 987 閱讀 2079

public listnode removenthfromend(listnode head, int n) 

//為了找到要刪除的節點的前乙個節點,所以此處讓fast.next!=null

while (fast.next != null)

//此時head為倒數第n個節點的前乙個節點。

slow.next = slow.next.next;

return res.next;

}

給定乙個單鏈表,把所有的奇數節點和偶數節點分別排在一起。請注意,這裡的奇數節點和偶數節點指的是節點編號的奇偶性,而不是節點的值的奇偶性。

請嘗試使用原地演算法完成。你的演算法的空間複雜度應為 o(1),時間複雜度應為 o(nodes),nodes 為節點總數。

示例 1: 輸入: 1->2->3->4->5->null       輸出: 1->3->5->2->4->null

示例 2: 輸入: 2->1->3->5->6->4->7->null      輸出: 2->3->6->7->1->5->4->null

思路:將奇節點放在乙個煉表裡,偶鍊錶放在另乙個煉表裡。然後將奇數鍊錶的尾指標指向偶數鍊錶的頭指標

public listnode oddevenlist(listnode head) 

listnode odd = new listnode(-1);

listnode oddhead = odd;

listnode even = new listnode(-1);

listnode evenhead = even;

while (head != null && head.next != null)

//防止最後還有乙個節點

if (head != null)

odd.next = evenhead.next;

return oddhead.next;

}

鍊錶與快慢指標

之前刷劍指offer遇到尋找鍊錶環的入口節點,需要使用到快慢指標,然後題一變,發現自己總是不能立馬聯想起來。總結一下快慢指標法在鍊錶中的一些常見的用處。leetcode 141 快指標每次走2步,慢指標每次走1步,如果鍊錶中有環,則兩個指標就會相遇。public boolean hascycle l...

快慢指標找煉表中點

今天在刷leetcode的題目 palindrome linked list的時候,想出來的解決演算法的空間複雜度都在o n 不符合題目的限制,在看了幾個部落格以後發現他們的解決方案都用到了乙個方法查詢鍊錶的中點 快慢指標找鍊錶中點法 演算法的思路是 定義乙個快指標fast 乙個慢指標slow 快指...

Leetcode 快慢指標與鍊錶

1.給定乙個鍊錶,判斷鍊錶中是否有環。解釋 鍊錶中有乙個環,其尾部連線到第二個節點。ps 從例子中根本看不出來好嘛。自己理解就ok 經典思想,快慢指標,如果有環存在,快指標總會追上慢指標 python definition for singly linked list.class listnode ...