題目描述:
給定乙個頭結點為 head 的非空單鏈表,返回鍊錶的中間結點。如果有兩個中間節點,則返回第二個中間結點。
示例1:
輸入:[1,2,3,4,5]示例2:輸出:此列表中的結點 3 (序列化形式:[3,4,5])
輸入:[1,2,3,4,5,6]解題思路:輸出:此列表中的結點 4 (序列化形式:[4,5,6])
由於該列表有兩個中間結點,值分別為 3 和 4,我們返回第二個結點。
1.單指標法
首先我們可以先求出鍊錶的長度n,然後對鍊錶進行遍歷到n/2處,即為所求節點。
**:
/**
* definition for singly-linked list.
* public class listnode
* }*/class
solution
return temp;
}//獲取鍊錶長度
public
static
intgetlength
(listnode head)
//輔助節點
listnode temp = head;
int length =0;
while
(true
) length++
; temp = temp.next;
}return length;
}}
2.雙指標法(快慢指標法)
用兩個指標 slow 與 fast 一起遍歷鍊錶。slow 一次走一步,fast 一次走兩步。那麼當 fast 到達鍊錶的末尾時,slow 必然位於中間。
**:
class
solution
return slow;
}}
LeetCode鍊錶 876鍊錶的中間節點
給定乙個帶有頭結點 head 的非空單鏈表,返回鍊錶的中間結點。如果有兩個中間結點,則返回第二個中間結點。示例 1 輸入 1,2,3,4,5 輸出 此列表中的結點 3 序列化形式 3,4,5 返回的結點值為 3 測評系統對該結點序列化表述是 3,4,5 注意,我們返回了乙個 listnode 型別的...
LeetCode 876 鍊錶的中間節點
給定乙個帶有頭結點 head 的非空單鏈表,返回鍊錶的中間結點。如果有兩個中間結點,則返回第二個中間結點。示例 1 輸入 1,2,3,4,5 輸出 此列表中的結點 3 序列化形式 3,4,5 返回的結點值為 3 測評系統對該結點序列化表述是 3,4,5 注意,我們返回了乙個 listnode 型別的...
leetcode876 鍊錶的中間節點
給定乙個帶有頭結點head的非空單鏈表,返回鍊錶的中間結點 如果有兩個中間結點,則返回第二個中間結點。輸入 1,2,3,4,5,6 輸出 此列表中的結點 4 利用快慢指標,fast指標,每次移動兩步,慢指標每次移動兩步,當快指標,移動到鍊錶尾部的時候,慢指標此時正在,中間的位置,當鍊表的結點數為奇數...